首页 > 代码库 > Uva 10452 - Marcus
Uva 10452 - Marcus
1 #include <iostream> 2 #define EOF (-1) 3 4 using namespace std; 5 6 char Path[12][100]; 7 int Step[7]={0};//记录走过的足迹 8 char example[8] = {‘@‘,‘I‘,‘E‘,‘H‘,‘O‘,‘V‘,‘A‘,‘#‘}; 9 10 void Dfs(int n,int m,int ex);11 int main(){12 int line,m,n;13 string Commands[3]={"forth","left","right"};14 //freopen("D:\\t.txt","r",stdin);15 while((cin>>line)&&(line!=EOF)){16 for(int i = 0;i < line;i++){17 cin>>n>>m;//输入鹅卵石路的宽m,长n18 for(int j=0;j<n;j++){19 for(int k=0;k<m;k++){20 cin>>Path[j][k];21 }22 }23 24 for(int q = 0;q < m;q++){25 if(example[0] == Path[n-1][q]){26 Dfs(n-1,q,0);27 break;28 }29 }30 for(int t = 0;t < 7;t++){31 cout<<Commands[Step[t]];32 if(t<6)cout <<" ";33 }34 cout<<endl;35 }36 }37 return 0;38 }39 40 void Dfs(int n,int m,int ex)41 {42 if( (Path[n-1][m] == example[ex+1]) && (ex<7)) {43 Step[ex] = 0;44 Dfs(n-1,m,ex+1);45 }46 if( (Path[n][m-1] == example[ex+1]) && (ex<7)){47 Step[ex] = 1;48 Dfs(n,m-1,ex+1);49 }50 if( (Path[n][m+1] == example[ex+1]) && (ex<7)){51 Step[ex] = 2;52 Dfs(n,m+1,ex+1);53 }54 }
原来递归运算时陷入了死循环,加上“ex>7”的判定,就好了;
输入的时候注意m,n(我是新手(*^__^*) )
题目意思很简单,就是沿着一个路径走到底就行,用dfs解决。
Uva 10452 - Marcus
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。