搜索
呆呆的人v
这个作者很懒,什么都没留下…
展开
-
noj 1060-图像审查
在背景为0的画面使用4联。当填充时遇到‘1’表示遇到一个图形元素 计数+1此时对´1´进行8联填充,目的是把一个完整图形元素做访问标记,这样再遇到该图形元素就不会重复计数再返回,继续对背景4联填充。原先用floodfill给封闭的图的边涂色,再深搜 看有多少个不同的连通图 结果wrong了 后来发现,原来是递归里,栈和队列调用太深,栈溢出了,得自己来栈!!#include "stdio.原创 2013-04-23 09:21:49 · 426 阅读 · 0 评论 -
noj 1063 Coins(DFS)
题意:有10种面值为 1, 2, 5, 10, 20, 50, 100, 200, 500 ,1000的钱 每种钱有一定的数量 给你一个总钱数,要求找出最少的钱币数量如果找不出输出-1思路:原以为可以用贪心解,但先付大钱,可能会无解(但其实是有解的) 用动态规划解 但你不知总钱数的范围 无法建数组最后改用DFS深搜实现//125MS 204K#include int co原创 2013-04-23 09:25:27 · 420 阅读 · 0 评论 -
poj 2488 A Knight…
题意:骑士遍历,在一个p*q的棋盘中,求一条路径遍历完所有的格子,输出其路径(按字典序)。思路:如果能,那必定是从A1这个格子出发(这应该很容易想明白) 一个难点就是要按字典序输出,只要控制搜索的方向就可以了即按字符小的搜索,字符相同的按数字小的搜索。然后就是DFS了。我定义 行为x,列为y(个人习惯)//168K 16MS#include#includeconst in原创 2013-04-23 09:28:41 · 479 阅读 · 0 评论 -
NOJ的几道经典搜索题题解
因为周六举行月赛,写几个经典的BFS DFS供大家参考,代码是以前写的不是很简洁,有不懂的可留言。注:写搜索时一定要记得访问标记,以免访问过的点再次访问,出现死循环等情况。1、走不出的迷宫:http://acm.nuc.edu.cn/OJ/problem.php?pid=1010数据范围比较小,可以用递归,代码简洁些;#include "stdio.h"#define M 82in原创 2013-04-23 09:28:43 · 645 阅读 · 0 评论 -
UVA 10344 23 out of 5(搜索+全排列)
题意:有5个数和+ - * 三种运算,问5个数经过各种运算能否得到23.思路:简单的搜索吧,用next_permutation 求出各种排列 再搜索一遍。//0 KB 719 ms#include #include #include using namespace std;int a[5];bool flag;void DFS(int pre,int cur){原创 2013-07-08 11:09:54 · 713 阅读 · 0 评论 -
UVA 11205 The broken pedometer
题意:计数器有问题,现在给出p和n,p表示用p位二进制数来表示一个数,n表示有n个数分别用二进制给出。问最少用多少列就能把这n个数区别开。列数不一定连续。思路:原来以为是用连续的m列来表示,WA了几次。这里用到了排列,用B[]来表示p位的排列,1表示取这一列,0反之。然后判断取这排列n个数是否相同。刘汝佳 的算法竞赛入门经典 121页#include #include原创 2013-07-04 21:15:19 · 665 阅读 · 0 评论 -
UVA 146 ID Codes(排列)
题意:给你一个字符串,求它的下一个排列,按字典序。思路:水题,用到一下next_permutation 求下一个排列函数。//0 KB 18 ms#include #include #include #define M 55using namespace std;int main (){ char str[M]; while (~scanf ("原创 2013-07-04 21:48:45 · 534 阅读 · 0 评论