数据库判断分解的无损连接性 例题:关系模式R(ABCDE),F{A->C, C->D, B->C, DE->C, CE->A}。分解成R1(AD),R2(AB),R3(BC),R4(CDE),R5(AE)
判断是否保持函数依赖 判断是否保持函数依赖直接通俗易懂的做法,分成4步:(1)求每个Fi{};(2)求原F{}中左侧元素的闭包,将其补齐在Fi中(3)求G,同时看F中的关系是否都在G中(4)如果都在,则保持依赖。如果有不在的,就对它求闭包(在G中求闭包)。如果闭包包含它的左侧元素,那么就是保持函数依赖,否则就不保持。例题:例:R={A, B, C, D, E}, F={B->A, D->A, A->E, AC-B}.判断分解P={R1(ABCE), R2(CD)} 是否保持函数依赖?这里分成
不同路径问题--动态规划 1.一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?class Solution { public int uniquePaths(int m, int n) { int[][] dp = new int[m][n]; for (int i = 0; i < m; i++) {
N皇后问题---回溯法 问题描述:N皇后问题,研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击(任何两个皇后都不能处于同一条横行、纵行或斜线上。)。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。例如:n=4,共有两种结果力扣第51题便是此题class Solution { public List<List<String>> sol
全排列2----有重复数字 利用used数字来记录当前数字是否被用过,如果当前数字和前一个数字一样,则跳过class Solution { List<List<Integer>> res = new ArrayList<>(); List<Integer>temp = new ArrayList<>(); public List<List<Integer>> permuteUnique(int[] nums) {
全排列--回溯 class Solution { public List<List<Integer>> permute(int[] nums) { List<List<Integer>> res = new ArrayList<>(); List<Integer>temp = new ArrayList<>(); if (nums==null || nums.length==0){
完成数独--java 思路:挨个判断当前要填入的数据是否合适,合适就填入class Solution { public void solveSudoku(char[][] board) { write(board); } public boolean write(char [][] board){ for (int i=0;i<9;i++){ for (int j=0;j<9;j++){ if (boar
KMP解释+原理 KMP算法—字符串匹配、查找子串。1.优点:非常快2.视频解析地址(本人认为这个up主讲的很好,肯定能看懂,一共分两期。一期讲原理,一期讲代码):小破站传送门1小破站传送门23.力扣上的第28题可以用此方法解决,当然也可以用编程语言的内置函数。但刷题难道不是为了学习算法么?以下是我根据这个up主的代码,写的java代码:class Solution { public int strStr(String haystack, String needle) { int res=
单链表翻转、k个一组进行翻转 单链表翻转、k个一组进行翻转1. 整个单链表翻转,k个一组进行翻转,原理一样2.假如有一个单链表:1->2->3->4->5->6->7->83.假如4个一组进行翻转,头结点为head4,完整代码在最后,(k个一组,java)(1)我们令pre.next=head;保存头结点的前一个位置;(2)tail=pre;tail=tail.next循环4次找到这一组的尾巴位置,nex=tail.next保存尾巴位置的后一个位置,方便连接。(3)现在就只需要将h