Hdu oj 1181 变形课
2015-08-06 20:58
239 查看
代码一
<pre class="html" name="code">#include<stdio.h> #include<string.h> using namespace std; int visited[1000]; int k; int i; int flag; struct stu { char x; char y; }a[1000]; void dfs(int cur) { if(flag) return ; if(a[cur].y=='m') { flag=1; return ; } for(int j=0;j<k;j++) { if(visited[j]==0&&a[j].x==a[cur].y) { visited[j]=1; dfs(j); visited[j]=0; } } } int main() { char s[20]; int len; k=0; while(scanf("%s",s)!=EOF) { if(s[0]=='0') { for(i=0;i<k;i++) { if(a[i].x=='b') { visited[i]=1; dfs(i); if(flag) break; } } if(flag) { printf("Yes.\n"); } else printf("No.\n"); flag=0; k=0; memset(visited,0,sizeof(visited)); } else { len=strlen(s); a[k].x=s[0]; a[k].y=s[len-1]; k++; } } return 0; }
代码二
这个代码是同学的,跟自己的思路(代码一)大同小异。个人比较崇尚简洁的代码。
#include<stdio.h> #include<string.h> int map[30][30]; int visit[30],flot; char s[100010]; void dfs(int x) { if(x=='m'-'a') { flot=1; return; } for(int i=0;i<26;i++) { if(map[x][i]&&!visit[i]) { visit[i]=1; dfs(i); visit[i]=0; } } return; } int main() { flot=0; int x,y,t; while(~scanf("%s",s)) { if(!strcmp(s,"0")) { dfs('b'-'a'); if(flot) puts("Yes."); else puts("No."); flot=0; memset(map,0,sizeof(map)); memset(visit,0,sizeof(visit)); } t=strlen(s); x=s[0]-'a'; y=s[t-1]-'a'; map[x][y]=1; } return 0; }
相关文章推荐
- php学习之路:WSDL详细解释(两)
- [leedcode 214] Shortest Palindrome
- python __new__()和__init__()哪个更早?
- Java笔试面试题003
- 南阳OJ 水池数目 【深搜】
- HDU5348——DFS——MZL's endless loop
- docker入门实践01
- java设计模式(6) - 装饰设计模式
- myBatis + SpringMVC上传、下载文件
- APP应用完美退出的方法的尝试
- github版本库使用详细图文教程(命令行及图形界面版)
- 登陆界面(LTView,UITextField,UIButton)
- Day8.06
- GPS定位,根据经纬度查询附近地点的经纬度-sql方法实现
- JAVADOC 常见使用方法 帮助文档
- hdu 1856 离散化+并查集
- NYOJ 36 最长公共子序列(基础LCS)
- java设计模式(5) - 策略者模式
- 图结构练习——最小生成树 Prim算法
- zoj 1671 Walking Ant