首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

acm hdu 1181 不知道递归错哪了。一直跳不过去。哪位高手帮小弟我看看

2012-09-10 
acm hdu 1181 不知道递归哪里错了。一直跳不过去。谁帮我看看。我不要你的解答代码。请你帮我找出错误。谢谢了。

acm hdu 1181 不知道递归哪里错了。一直跳不过去。谁帮我看看。
我不要你的解答代码。请你帮我找出错误。
谢谢了。

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搜索即可。

热点排行