acm hdu 1181 不知道递归错哪了。一直跳不过去。哪位高手帮小弟我看看
acm hdu 1181 不知道递归哪里错了。一直跳不过去。谁帮我看看。
我不要你的解答代码。请你帮我找出错误。
谢谢了。
------解决方案--------------------
呃,费了好些力知道LZ想要做的事了...不过LZ的代码似乎还是一个调试过程中的产品吧,...
你说的递归应该是指search吧,
第一个判断“0”的条件不会满足,因为“0”是用来分割一组测试数据的
第二个判断就算满足后,也不会有任何效果...
第三个判断是你程序一直跳不出去的原因,因为你的判断条件是是否首尾相同...一旦相同你有递归判断,第三个条件还是满足,死循环...
LZ最好把整个结构改一下,不然就算跳出了循环也不一定找到解...其实,这道题DFS搜索即可。
我不要你的解答代码。请你帮我找出错误。
谢谢了。
- C/C++ code
#include <iostream> #include <cstdio> using namespace std; int num=0; char word[100][100]; int vis[100]; bool search(char ch) { for(int i=0;i<=num;i++) { if(word[i][0]=='0') return false; else if(ch=='m') return true; else if(word[i][0]==ch) { ch=word[i][strlen(word[i])-1]; printf("%s %c\n",word[i],word[i][strlen(word[i])-1]); search(ch); } } } int main() { memset(word,'\0',sizeof(word)); while(scanf("%s",word[num])) { if(word[num][0]=='0') break; num++; } memset(vis,0,sizeof(vis)); for(int i=0;i<num;i++) { char c; if(word[i][0]=='b') { c=word[i][strlen(word[i])-1]; search(c); } } system("pause"); }
------解决方案--------------------
呃,费了好些力知道LZ想要做的事了...不过LZ的代码似乎还是一个调试过程中的产品吧,...
你说的递归应该是指search吧,
第一个判断“0”的条件不会满足,因为“0”是用来分割一组测试数据的
第二个判断就算满足后,也不会有任何效果...
第三个判断是你程序一直跳不出去的原因,因为你的判断条件是是否首尾相同...一旦相同你有递归判断,第三个条件还是满足,死循环...
LZ最好把整个结构改一下,不然就算跳出了循环也不一定找到解...其实,这道题DFS搜索即可。