摘要:
具体合并的过程并不是很清晰啊 代码 include using namespace std; int n1[100]; int n2[100]; void ms(int x,int y) { if(y x 1) { int m=x+(y x)/2; int p=x,q=m,i=x; ms(x,m); 阅读全文
摘要:
一道比较特殊的dfs题,同样给定了数据直接打表。 题目中的+和 的抵销规律可以看做0和1的异或运算,而且还有一个重要的规律,我不会证明那就是 的个数 2=总个数 还有就是这个回溯,真的是好长。。。。 打表代码,省去了freopen include using namespace std; int a 阅读全文
摘要:
把小的牌放到大的牌上,求最小移动的距离和 DFS遍历所有的可能,把每一张牌与之要移动的牌都进行两层for的循环,注意回溯条件满足立刻break 代码(算法借鉴) include using namespace std; int sum,vis[20],num[20],ans; void dfs(in 阅读全文
摘要:
A.成绩 签到题不多说注意用double就行 代码 B.棋盘 DFS+剪枝,特别的地方在于魔法的使用,因为DFS的特殊性,魔法用bool表示的上一个格子是不是已经使用了魔法 代码 include using namespace std; int f[110][110]; int mp[110][11 阅读全文
摘要:
dfs的题,这个题不好想的就是这个重复单词的选取过程,我索性看了题解。发现可以直接用两个for得出,i确定第一个串的左边的位数j确定右移多少位。注意i从1开始因为str[i][str[i].size()]没有值!!! int bj(string a,string b) { for(int i=1;i 阅读全文