搜索
呆呆的人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 #include const 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 82 in原创 2013-04-23 09:28:43 · 644 阅读 · 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 55 using namespace std; int main () { char str[M]; while (~scanf ("原创 2013-07-04 21:48:45 · 534 阅读 · 0 评论