摘要: 题目n*m的矩阵,只用正方形铺。求最少正方形个数。n,m=m如果memo中计算过,则直接返回。for(i=[1,m])在左上角放入大小为i的正方形。那么剩下来的部分有两种方法:以正方形的两条线把矩阵分割成一共三个部分。f(m-i,n)+f(i,n-i)或者f(n-i,m)+f(m-i,i)。这两种方案取小者。上面的思路是错误,对于下面的形式不能适用。普通形式应该是上图这样的。之前的形式是上图的特殊... 阅读全文
posted @ 2019-11-13 23:12 Fanny123 阅读(551) 评论(0) 推荐(0) 编辑
摘要: 题目给定一个字符串数组 arr,字符串 s 是将 arr 某一子序列字符串连接所得的字符串,如果 s 中的每一个字符都只出现过一次,那么它就是一个可行解。请返回所有可行解 s 中最长长度。解题暴力回溯:f(i,bool[],arr):遍历到arr中第i个字符串,bool数组标识已经出现过的字符。f(i+1,bool[],arr)+arr[i].length()//如果bool和arr[i]没有冲突... 阅读全文
posted @ 2019-11-13 22:29 Fanny123 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 题目给你两个整数 n 和 start。你的任务是返回任意 (0,1,2,,...,2n-1) 的排列 p,并且满足:p[0] = startp[i] 和 p[i+1] 的二进制表示形式只有一位不同p[0] 和 p[2n -1] 的二进制表示形式也只有一位不同思路暴力回溯:O(n*2n)f(s,visited,listRes)用s标识二进制的字符串if(visited.size())==162)则可... 阅读全文
posted @ 2019-11-13 22:20 Fanny123 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 题目给定方程f和值z,找出给定方程f(x,y)=z的正整数解x,y。f(x,y)关于x、y都是严格单调的。题目保证 f(x, y) == z 的解处于 1 > findSolution(CustomFunction customfunction, int z) { List> res=new ArrayList(); int MAX_VAL=1000; for (int i = ... 阅读全文
posted @ 2019-11-13 22:12 Fanny123 阅读(322) 评论(0) 推荐(0) 编辑