Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
这个代码是哪里会出现死循环吗?为什么是超时了 ……#include <iostream> using namespace std; int m,n,x,y,result1,result2; char data [12][12]; int map[12][12]; void xh() //处理环路 { int a=x,b=y; do { if(data[x][y]=='N') {--x;++result2;} if(data[x][y]=='S') {++x;++result2;} if(data[x][y]=='W') {--y;++result2;} if(data[x][y]=='E') {++y;++result2;} }while(!(a==x && b==y)); cout<<result1-result2<< " step(s) before a loop of "<<result2<<" step(s)"<<endl; return ; } int main() { while(cin>>m>>n>>y && m) { x=0; --y; result1=1; result2=0; for(int i=0;i<m;i++) for(int j=0;j<n;j++) { cin>>data[i][j]; map[i][j]=0; } map[x][y]=1; while(true) { if(data[x][y]=='N') { if(x>0 && !map[x-1][y]){--x;++result1;map[x][y]=1;} //移动到下一格 else if(x==0) {cout<<result1<<" step(s) to exit"<<endl;break;} //已移动至边缘,输出步数 else {--x;xh();break;} } if(data[x][y]=='S') { if(x<m-1 && !map[x+1][y]){++x;++result1;map[x][y]=1;} else if(x==m-1) {cout<<result1<<" step(s) to exit"<<endl;break;} else {++x;xh();break;} } if(data[x][y]=='W') { if(y>0 && !map[x][y-1]){--y;++result1;map[x][y]=1;} else if(y==0) {cout<<result1<<" step(s) to exit"<<endl;break;} else {--y;xh();break;} } if(data[x][y]=='E') { if(y<n-1 && !map[x][y+1]){++y;++result1;map[x][y]=1;} else if(y==n-1) {cout<<result1<<" step(s) to exit"<<endl;break;} else {++y;xh();break;} } } } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator