总是T,以为要剪枝,后来发现加个map就行了 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define MOD 100000000710 ...
分类:
其他好文 时间:
2015-08-15 16:18:11
阅读次数:
81
Problem DescriptionLike everyone, cows enjoy variety. Their current fancy is new shapes for pastures. The old rectangular shapes are out of favor; new...
分类:
其他好文 时间:
2015-08-14 21:02:19
阅读次数:
228
题目链接:点击打开链接
题意描述:给一个n*m的棋盘,现在有k种颜色的涂料,每种涂料可以使用ai次。求能否找出一种方案,给所有的格子染色,保证相邻的格子之间颜色不同。如果存在给出任意一种解决方案;否则输出NO
解题思路:dfs+剪枝
由于题目中棋盘最大为5×5所以可以考虑使用dfs,染色问题有一个结论貌似是:(剩余的格子的数量+1)>= 任意一种涂料的个数,否则染色必然失败。因此我们...
分类:
其他好文 时间:
2015-08-14 13:55:10
阅读次数:
110
剪枝还是挺多的,不过都比较容易想,主要是复习一下奇偶性剪枝。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int N = 7; 8 char maze[N][N]; 9 int d...
分类:
其他好文 时间:
2015-08-14 11:35:10
阅读次数:
98
Exchange CardsTime Limit: 2 Seconds Memory Limit: 65536 KBAs a basketball fan, Mike is also fond of collecting basketball player cards. But as a stud....
分类:
其他好文 时间:
2015-08-13 22:00:14
阅读次数:
123
回溯法,简单理解就是有源可溯。基本思想要借鉴穷举法,但是它不是一味地穷举,当发现某一步不符合条件时,这一步后面的穷举操作就不进行了(俗称“剪枝”),我自己把它叫做动态穷举法。假设第一个步骤可行,那么执行第二个步骤,第三个......如果其中第三个步骤不行,那么我们再回过来(回溯),第二个步骤换一种方...
分类:
其他好文 时间:
2015-08-13 20:08:20
阅读次数:
10939
#include#include#includeusing namespace std;bool g[26][26];int used[26];int n;//id 是当下着色结点 color是限制的颜色数量bool dfs(int id, int color){ bool flag;...
分类:
其他好文 时间:
2015-08-13 20:00:15
阅读次数:
195
由于每个元素我可以出现的次数没有限制,我们可以在使用某个元素的时候进行计算一下最多的个数,进行枚举。同样的道理,在每一层递归只考虑一个元素,并且在当前sum大于目标sum的时候进行剪枝。 1 import java.util.*; 2 3 public class Solution { 4 ...
分类:
其他好文 时间:
2015-08-12 21:35:08
阅读次数:
88
问题非常清楚,这里需要注意的是:我们不能使用剪枝策略,而是应该遍历所有的没有重复元素的三元组。 1 public class Solution { 2 public List> threeSum(int[] nums) { 3 Arrays.sort(nums); 4 ...
分类:
其他好文 时间:
2015-08-12 21:29:00
阅读次数:
103
紫书上给的是状态空间搜索,其实本题也可以用IDA*算法,因为其符合IDA*的特点 : 求最小迭代次数 。
根据旋转的规律,我们可以用几个数组来储存向各个方向旋转时改变哪些量,用来维护旋转这个操作 。另外就是估价函数:当前出现在中间八个格子中次数最多的数字设为t ,那么剩下的迭代次数就是8 - t , 如果它加上已经迭代的次数d > maxd ,则应当剪枝 。
另外想到了一个估算回溯法的时间复...
分类:
编程语言 时间:
2015-08-11 21:28:50
阅读次数:
208