搜索
傻笨
这个作者很懒,什么都没留下…
展开
-
杭电1016
这是一道典型的搜索题!我一开始还看不懂!后来再别人的帮助下慢慢理解!#include#include#includeint a[21],shuzi[21],prime1[38]={0};int n;int prime(int x){ int i; for(i=2;i { if(x%i==0) {原创 2013-04-12 14:41:03 · 543 阅读 · 0 评论 -
HDU 1035 简单搜索,
/* 这题看起来好吓人,但是慢慢看下去,会发现就是简单那的 模拟题,也可以说是简单的搜索,不过搜索的方向是题目告诉的 方向,只要判断两个点就够了,一是直接出去的时候, 二是:当在某个时候一直在里面循环!! */#include #include #include #include using namespace std;char s[12][12];原创 2013-10-23 17:01:28 · 526 阅读 · 0 评论 -
Codeforces Round #212 (Div. 2) A题
这道题目其实蛮简单的,我比赛的时候一看到这个题目就想到用广搜,可是错在第三组数据上了,后面就没怎么想了,原来题目有两个条件很重要,我却没看,导致CF只刷了一题,今天晚上重做这题时,看到了这两个条件,就把它给AC 了!!这两个条件是:'#'这个不能加入判断,因为题目中说可以穿过‘#’,还有就是两个人同时动,所以利用广搜的思路,一个人不动,另一个人去搜他,然后判断步数是不是偶数,如果是奇数的原创 2013-11-15 18:48:48 · 758 阅读 · 0 评论 -
成都站现场赛——题目重现 Hard Disk Drive
题目如下:Hard Disk DriveTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 0 Accepted Submission(s): 0Problem DescriptionYesterday your dear cous原创 2013-11-16 13:34:42 · 750 阅读 · 0 评论 -
HDU 1973 BFS+素数打表
思路:先素数打表,把1到10005范围内的素数找出来,然后把要输入的两个数当做字符串输入,然后进行广搜广搜的思路就是,把每一位数都变化一下,存入队列中,然后不断的比较,就可以得出结果了!!!!#include #include #include #include #include #include using namespace std;const int maxn=10005原创 2013-11-06 13:10:19 · 636 阅读 · 0 评论 -
HDU 2653 BFS+优先队列
/* 这题题意:告诉起点Y的位置,然后告诉终点L的位置,然后输入 n, m, t ,p,其中 n和m是代表行和列,而t 是时间,p代表能量,如果在t范围内没有找到L的话,就失败了,如果在t范围内找到了L,那么求出最少步数, .代表空地,可以走路过去,也可以飞过去,#代表不能走路过去,也不能飞过去,而@代表的是可以飞过去,但不能 走路过去,所以要广搜的同时要用到优先队列,原创 2013-11-06 16:45:48 · 553 阅读 · 0 评论 -
HDU 2216 有意思的BFS
这道题目 首先得看懂题目意思,还有一个就是 知道怎么判断 该点在你点的附近,代码如下:#include #include #include #include #include #include #include using namespace std;const int N=30;char s[N][N];int n,m;int dir[4][2]={{0,1},{0,-原创 2013-11-08 18:25:29 · 709 阅读 · 0 评论 -
HDU 4771 BFS+状态压缩
这题意思就是求出从起点到所给出来的点的所有点的最少路径数#include #include #include #include #include using namespace std;const int N=105;int n,m,k;int dir[4][2]= {{0,1},{0,-1},{1,0},{-1,0}};char s[N][N];int p[N][N];原创 2013-11-13 14:20:36 · 577 阅读 · 0 评论 -
HDU 1429 BFS+状态压缩
#include #include #include #include #include #include using namespace std;const int N=21;const int KEY=10;char s[N][N];int dir[4][2]= {{0,1},{0,-1},{1,0},{-1,0}};int n,m,k;bool hash[N][N][原创 2013-11-13 16:49:16 · 562 阅读 · 0 评论 -
HDU 2209
这个题目,一开始以为好难,看别人的思路,要分两种情况,就是第一种:第一张牌翻过来 第二种:第一张牌不翻过来,然后当i-1张牌全部翻过来了,只要考虑第i张牌时正的,还是反的就可以了第一种写法,搜索(递归)#include #include #include #include using namespace std;const int inf=0x3f3f3f3f;char s原创 2013-10-24 16:55:58 · 567 阅读 · 0 评论 -
zoj1002 深搜题解题报告
#includeusing namespace std;int visit[10][10],nmax,sum,n;int find(int x,int y){ int i; for(i=x; i>=0; i--) { if(visit[i][y]==1) return 0; if(v原创 2013-05-02 14:38:42 · 626 阅读 · 0 评论 -
杭电1010
#include#include#includeint n,m,t,flag;int starx,stary,doorx,doory,wallnumber;int movex[]={0,-1,0,1},movey[]={-1,0,1,0};char maze[7][7];void dfs(int,int,int); //深搜int main(){ int转载 2013-04-13 13:44:38 · 478 阅读 · 0 评论 -
杭电1015
#include#include#includeusing namespace std;int m,a,b,c,d,e;int A,B,C,D,E;char h[28];bool cmp(const char &a,const char &b){ return (b-a)>=0?false:true;}int main(){ int原创 2013-04-13 15:22:28 · 527 阅读 · 0 评论 -
搜索
搜索有以下几种算法: 枚举算法:也即列举问题的所有状态从而寻找符合问题的解的方法。 适合用于状态较少,比较简单的问题上。 广度优先搜索:从初始点开始,根据规则展开第一层节点,并检查目标节点是否在这些节点上,若没有,再将所有的第一层的节点逐一展开,得到第二层节点,如没有,则扩展下去,直到发现目标节点为止。比较适合求最少步骤或最短解序列的题目。 一般设置一个队列queu转载 2013-04-14 20:49:30 · 512 阅读 · 0 评论 -
简单搜索题!
设有一个4*4的棋盘,用四个棋子布到格子中,要求满足以下条件: (1)任意两个棋子不在同一行和同一列上; 试问有多少种棋局,编程把它们全部打印出来。 代码如下:#include#include#include#include#includeusing namespace std;int n=4, m=4, used_line[12原创 2013-04-15 18:58:39 · 508 阅读 · 0 评论 -
杭电1312,搜索题
#include#include#include#includeusing namespace std;int w,h,i,j,sum=0;char map[30][30];char movex[4]={-1,1,0,0},movey[4]={0,0,-1,1};void dfs(int x,int y){ int i;//要使用局部变量!原创 2013-04-15 20:25:58 · 462 阅读 · 0 评论 -
杭电1241
这题题目我就没有看懂,还是学长告诉的,意思就是:@在一块的算作一块油田,求一共有多少块油田!坑爹吧!写完后,更加坑爹的事发生了,我定义了全局变量后,竟然还定义了局部变量!害的我找了好久,还是在学长帮助下找到错误的!#includechar a[100][100];int m,n;int movex[8][2]={{1,0},{1,-1},{1,1},{0,-1},{0,1},{-1原创 2013-04-16 16:10:38 · 497 阅读 · 0 评论 -
POJ1321
#include#includeusing namespace std;bool chess[9][9];bool vist_col[9]; //列标记int status; //状态计数器int n,k;void DFS(int row,int num) //逐行搜索,row为当前搜索行,num为已填充的棋子数{ if(num==k)原创 2013-04-17 17:55:28 · 516 阅读 · 0 评论 -
八皇后问题,杭电2553
方法一:#include #define NUMS 10/*输入的数字1---10*/int N;/*棋盘*/int chessboard[11][11];/* 用来记录拜访数目 */int cal;/*检查皇后放置此行此列是否可以,可以返回1,不可以返回0此递归是一行一行找的,K是棋盘的长度*/int dfs_check(int row转载 2013-04-20 17:20:57 · 918 阅读 · 0 评论 -
HDU 2531 BFS
#include #include #include #include using namespace std;const int N=110;const int M=10010;char s[N][N];int n,m,ans;int vis[N][N];int dir[4][2]= {{0,1},{0,-1},{1,0},{-1,0}};int px[M],py[M];原创 2013-11-14 20:35:32 · 518 阅读 · 0 评论