随笔分类 -  acm-深搜

hdu 2518(dfs)Another Eight Puzzle
摘要:思路:dfs的思想,比较简单的搜索题。代码实现:#include<iostream>#include<cstring>using namespace std;int a[10],b[10],flag,visited[10];int yanzheng(int i){ if(i==1)//和A相连的字母,下同 { if((a[2]!=0&&abs(a[i]-a[2])==1)||(a[3]!=0&&abs(a[i]-a[3])==1)||(a[4]!=0&&abs(a[i]-a[4])==1)) return -1; retu 阅读全文

posted @ 2013-03-06 22:16 后端bug开发工程师 阅读(494) 评论(0) 推荐(0)

hdu 1181(dfs)变形课
摘要:#include<stdio.h>#include<string.h>int visited[1000],n,flag;char a[1000][3];void dfs(char str){ int i; char temp; if(str=='m') { flag=1; return ; } for(i=1;i<=n;i++) { if(flag==1) break; if(visited[i]==0&&a[i][1]==str) { t... 阅读全文

posted @ 2013-03-06 22:01 后端bug开发工程师 阅读(453) 评论(0) 推荐(0)

hdu 2553 N皇后问题(有点坑爹的深搜题dfs)
摘要:题意:就是问任意两个点之间不在同一行、不在同一列、两点的连线不能与正方形的边成45度角总共有多少种方法。思路:一般的深搜题,但要注意两点的连线不能与正方形的边成45度角,坑爹的是用深搜编出来之后我提交了竟然是超时,后来想想完全可以打表啊!!代码实现:超时代码,用的是基本的深搜,能够得出结果,用于后面的打表#include<stdio.h>#include<string.h>int sum,n,visited[15],flag1[25],flag2[25];void dfs(int i,int num){ int j; if(num==n) sum++; else... 阅读全文

posted @ 2013-02-25 22:02 后端bug开发工程师 阅读(1161) 评论(0) 推荐(0)

hdu 1258(dfs)
摘要:题意:首先给你一个t,然后是n,后面输入n个数(是非递增顺序的,亲~要注意一下哦),然后让你求的是n个数中和为t的序列总共有多少种,把他们按从左到右的顺序输出来。思路:深搜思想,最重要的是如何避免重复的序列(详见代码)代码实现:#include<iostream>#include<cstring>using namespace std;int sum,n,a[20],b[20],s,flag;void dfs(int f,int num)//深搜{ int i,visited[101]; if(s==sum) //满足题意就输出来 { flag=0; ... 阅读全文

posted @ 2013-02-04 13:34 后端bug开发工程师 阅读(299) 评论(1) 推荐(0)

hdu 1016(一道经典的dfs)
摘要:题意:很容易理解,就是让你输出满足相邻的相加是素数的序列(注意不要重复)思路就是深搜思想把每种情况遍历一次代码实现:#include<stdio.h>#include<string.h>int prime[40]={0,1,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0},n;//素数打表,因为n最大是20,所以只要打到40int visited[21],a[21];void dfs(int num)//深搜{ int i; if(num==n&&pr 阅读全文

posted @ 2013-02-04 13:13 后端bug开发工程师 阅读(7178) 评论(0) 推荐(0)

导航