搜索
小黑妹
穷则独善其身,达则兼济天下!
展开
-
poj 1011 木棒
此题是一个超级搜索剪枝。 剪枝的地方: 1. 当前这个棍子有没有用过。 2. 当他大于所需要搜的长度时,就不用搜了。 3. 如果前面一个相等长度的棍子用不上,那么这个棍子自然也用不上。 然后还有一些小剪枝: 4. 预处理排序后方便以后搜。 5. 从大到小搜,不重复搜。 6. 搜的长度一定要整除总长度,而且大于最长的那一根棍子。 7. 从当前最长的未被使用的木棍开始原创 2012-07-07 20:33:37 · 563 阅读 · 0 评论 -
poj 2488 骑士的旅行
这真是一个很坑爹的题目,其实题目意思很简单就是骑士像象棋里面的马走日字,不能走重复的点并且必须走完所有的点。输出必须按字典顺序。横坐标用字符,‘A’,'B','C'......纵坐标用数字。题目就是Dfs很悲剧的是我把数组弄反了WA了n次,最后找出来我有点想撞墙的冲动啊!继续搜索啊! 代码: #include #include int r,c,px[50],py[50],visit[10原创 2012-07-15 22:16:34 · 657 阅读 · 0 评论 -
poj 3009 Curling 2.0
题意:搜索,已知起点和终点,求石子从起点到达终点的最短路,如果无法到达,则输出-1。石子移动的具体规则如下: 1、开始时,石子在起点s处 2、运动方向可以是水平或垂直的,不能斜方向运动 3、最开始的时候,你可以将石子向上下左右任意一个方向抛,如果与它相邻的点是障碍物的话除外 4、一旦石子开始运动,有三种可能: a、遇到障碍物,石子会停在障碍物的前一格,障碍物会消失 b、如果出界,游戏失原创 2012-07-16 10:41:32 · 509 阅读 · 0 评论 -
poj 1426Find The Multiple
这真是超神奇的一道题目!样例没过,照样ACCEPTED,看来我人品爆了。呵呵呵。。。本人还是觉得是样例有问题的! 题目意思超简单:找到任意n的倍数m,但是m由十进制0,1组成。直接BFS。 代码: #include using namespace std; __int64 q[9999999]; int n; void bfs() { int front,rear原创 2012-07-16 20:53:57 · 352 阅读 · 0 评论 -
poj 3278 Catch That Cow
第一次写bfs就扼杀在RE中,一直不明白为什么数组会小呢?题目给的就是100000的,最后我愤怒地开了400001,果断的就AC了。晕。。。。 题目的意思是:从N开始有三种操作n+1,n-1,2*n直到等于k,输出最短路径所需的步数。一看就知道要用BFS. 代码: #include #include #include using namespace std; queueq; i原创 2012-07-16 19:56:44 · 355 阅读 · 0 评论 -
poj 1321棋盘问题
Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。 Input 输入含有多组测试数据。 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。原创 2012-07-16 17:35:56 · 465 阅读 · 0 评论 -
poj 2531
题意:在一个网络中有n个节点,现在需要把n个节点分成两部分,每部分之间的通信代价为0,不同部分之间的通信代价为Cij。求一种划分方式,是的总得代价最大。 我用的是暴力dfs.500+过。总得来说这道题目还是很简单的。 代码: #include using namespace std; int a[25][25],visit[25],n,ans; void dfs(int index,i原创 2012-07-17 14:19:06 · 930 阅读 · 0 评论 -
poj 3126Prime Path
题意很简单:两个四位数的素数通过改变某一位,得到另一个素数,这样一直操作下去,求当m变成n时最少的操作次数?分析可知道,求最短的操作步数肯定要用BFS,因为要求素数所以要筛选素数求出素数。这题很简单一次就过而且时间仅有0MS哦! 代码: #include #include using namespace std; queueq; int ans[10000]; bool visit[10原创 2012-07-17 10:56:36 · 406 阅读 · 0 评论