摘要:
题目描述:玛雅人有一种密码,如果字符串中出现连续的2012四个数字就能解开密码。给一个长度为N的字符串,(2=#include #include #include #include #include using namespace std;string str;int N;bool visited[1600000];bool match(const string &str1) { for(int i = 0; i > str; memset(visited, 0, sizeof(visited)); deque record; record.pu... 阅读全文
摘要:
题目描述:一个数的序列bi,当b1 #include using namespace std;int dp[1001];int val[1001];int n;int main() { while(scanf("%d", &n) != EOF ) { for(int i = 0; i = val[i]) continue; dp[i] = max(dp[i], dp[j]+val[i]); } } int resval = 0; for(int i = 0; i < n; i ++... 阅读全文
摘要:
题目描述: 对于一副扑克牌,我们有多种不同的洗牌方式。一种方法是从中间某个位置分成两半,然后相交换,我们称之为移位(shift)。比如原来的次序是123456,从第4个位置交换,结果就是561234。这个方式其实就是数组的循环移位,为了多次进行这个操作,必须使用一种尽可能快的方法来编程实现。在本题目中,还引入另外一种洗牌方式,就是把前一半(如果总数是奇数,就是(n-1)/2)牌翻转过来,这种操作称之为翻转(flip)。在前面shift操作的结果上进行flip,结果就是165234。当然,如果是实际的扑克牌,直接翻转会造成正反面混在一起的,我们就不管那么多了。 给定n张牌,初始次序为从1到n,经 阅读全文
摘要:
题目描述:给定正整数N,函数F(N)表示小于等于N的自然数中1和2的个数之和,例如:1,2,3,4,5,6,7,8,9,10序列中1和2的个数之和为3,因此F(10)=3。输入N,求F(N)的值,1=<N<=10^100(10的100次方)若F(N)很大,则求F(N)mod 20123 的值。思路1. 剑指 offer 例题.2. 这题需要对数组求摸, 就懒得做了 阅读全文
摘要:
题目描述:给定n个物品的重量和两艘载重量分别为c1和c2的船,问能否用这两艘船装下所有的物品。思路1. 朴素背包问题2. 有几个细节要好好把握 (1) 在读入物品重量时顺带统计物品的最大值和总重量 (2) 对载重量较小的船计算dp3. 一维 dp, dp[i] 表示总物品重量为 i 时的最大价值, 因此 dp[i] 是不连续的, 统计结果时需要遍历 dp. 而二维 dp[][] 则可以填满矩阵代码 未通过九度测试#include #include #include using namespace std;int n, c1, c2;int wet[200];int dp[10000];int 阅读全文
摘要:
Leetcode 原题.这里 N 最大会取到 13, TLE 了代码#include #include using namespace std;bool chess[15][15];int n;int cnt;void dfs(int depth) { if(depth == n) { cnt ++; return; } for(int i = 0; i = 0; j --) { if(chess[j][i]) { qualify = false; break; ... 阅读全文
摘要:
题目描述:给定一个n*n的矩阵,求该矩阵的k次幂,即P^k思路1. 和求解整数幂的思路相同, 使用分治策略, 代码的框架是int pow(a, b) { c = pow(a, b/2) c*= c; if(b 为奇数) c *= a; return c}2. 这道题求的是矩阵, 上面的框架不太好用, 毕竟返回一个矩阵是有点不靠谱. 既然显式的返回矩阵不行, 那就玩个把戏, 隐式返回.将矩阵设置为全局变量, 使得递归函数里对矩阵的操作全局有效, 就不需要显式返回矩阵了3. 尝试仅使用两个矩阵得出结果, 但失败了, 计算矩阵乘法, 至少需要三个矩阵的空间吧代码#include #in... 阅读全文