HDU 1181 变形课 DFS基础题 初学者角度+详细注释
2017-04-26 01:00
288 查看
题意:单词接龙,起点字母是b,终点字母是m。难得的中文题目啊!
思路:单词首尾连接一直搜到终点字母,DFS深搜啊,注意格式就行了,wa的基本都是格式。
悲催啊!本以为这种基础题我应该能一次AC的,谁知道wa了三次在多组输入那个格式那里。这里说一下吧。如果是C语言标准输入输出的话,看到题目有:测试样例有多组。这几个字眼就请乖乖写一句while(scanf( )!=EOF)。 EOF即end of file是结束符,系统默认-1。意思是只要系统从缓冲区读取不到东西的时候才退出程序(我记得是这样吧,哈哈!),如果是C++的话,直接把cin放进while里面就好了,不需要EOF(我初学者,我也不知道为什么,见笑了)。
下面是我的AC代码(wa在格式上很痛苦)
,带详细注释。
题目传送门(喜欢蓝色怪我咯)
思路:单词首尾连接一直搜到终点字母,DFS深搜啊,注意格式就行了,wa的基本都是格式。
悲催啊!本以为这种基础题我应该能一次AC的,谁知道wa了三次在多组输入那个格式那里。这里说一下吧。如果是C语言标准输入输出的话,看到题目有:测试样例有多组。这几个字眼就请乖乖写一句while(scanf( )!=EOF)。 EOF即end of file是结束符,系统默认-1。意思是只要系统从缓冲区读取不到东西的时候才退出程序(我记得是这样吧,哈哈!),如果是C++的话,直接把cin放进while里面就好了,不需要EOF(我初学者,我也不知道为什么,见笑了)。
下面是我的AC代码(wa在格式上很痛苦)
,带详细注释。
题目传送门(喜欢蓝色怪我咯)
#include <iostream> #include <cstring> using namespace std; int i,flag; //flag表示是否找到解 char str[1000][20]; //存单词 bool book[1000]; bool dfs(int j) //传入下标 { char *p; //这里我用指针找到单词的最后一个字母 p=&str[j][0]; while(*p!='\0') p++; p--; if(*p=='m') //如果找到字母m就标记flag然后返回 { flag=1; return true; } for(int k=0; k<i; k++) { if(book[k]) //标记过的跳过 continue; if(str[k][0]!=*p) //首字母和上一个单词的尾字母不能连接的跳过 continue; book[k]=true; if(dfs(k)) //如果dfs的下一步是true,就返回true return true; book[k]=false; } return false; //如果找不到解就返回false } int main() { while(cin >> str[i]) //我是wa了三次在这里的输入格式上的问题,注意题目字眼:测试数据有多组 { //如果是C语言的话就要写scanf(" ")!=EOF,表示不遇到结束符就不结束程序 if(str[i][0]=='0') { cout << "No." << endl; i=0; //由于是多组输入,所以结束一次测试后,这里要把i归零 continue; } i++; while(cin >> str[i]) { if(str[i][0]=='0') break; i++; } flag=0; int j; for(j=0; j<i; j++) //因为现在的str[i]='0',所以遍历只需要到i-1; if(str[j][0]=='b') //从首字母是'b'的字符串开始dfs { memset(book,false,sizeof(book)); //这里很重要啊,清零标记数组,dfs常用,有了这个就能节省很多语句 book[j]=true; dfs(j); } if(flag) cout << "Yes." << endl; //注意有个句号 else cout << "No." << endl; i=0; //由于是多组输入,所以这里要把i归零,和上面同理 } return 0; }
相关文章推荐
- HDU 1241 DFS基础题 Oil Deposits石油储藏 以初学者角度+详细注释
- hdu 题目1181 变形课 (简单DFS)
- HDU 1181 变形课 (dfs)
- hdu 1181 变形课 DFS
- HDU 1181 变形课(dfs)
- hdu 1181 变形课(dfs)
- HDU--1181 -- 变形课 [DFS]
- hdu 1181 变形课 (dfs)简单搜索
- hdu 1181 变形课(dfs)
- HDU 1181.变形课【DFS(BFS也可以的)】【问题的转化】【8月5】
- HDU 1181 变形课 DFS
- (step4.3.7)hdu 1181(变形课——DFS)
- hdu 1181 变形课 (dfs)简单搜索
- HDU 1181 变形课 (DFS)
- HDU 1181 变形课(dfs)
- hdu 1181 变形课 dfs
- hdu 1181 变形课 (dfs- -)
- hdu 1181 变形课(DFS)
- HDU 1181 变形课(DFS)
- HDU1181——变形课(dfs)