poj2488骑士之旅
2013-07-11 21:24
330 查看
题目大意:国际象棋里面的马,有那么8种跳法,然后题目给出一个棋盘的大小p*q, 求有没有路线可以使得这个马能把整个棋盘的格全部走一遍,有的话按照字典序将第一条路线打印出来。
注意:国际象棋是行是数字,列是字母,按照字典序A1B3....,是需要按照先列后行来处理的。
因为要找一条路径出来,所以考虑深度优先(DFS)
贴一下烂代码(o(╯□╰)o):
注意:国际象棋是行是数字,列是字母,按照字典序A1B3....,是需要按照先列后行来处理的。
因为要找一条路径出来,所以考虑深度优先(DFS)
贴一下烂代码(o(╯□╰)o):
#include<iostream> #include<string> using namespace std; int chess[27][27]; int path; bool exist=0; string rec; void DFS(int y,int x,int szy,int szx) { chess[x][y]=1; path++; rec.push_back(char(y+'A')); rec.push_back(char(x+'1')); //cout<<"Beginning:"<<rec<<endl; int increx,increy;//,flag=0; for(int n=0;n<8;n++) { switch(n){ case 0: increy=-2;increx=-1;break; case 1: increy=-2;increx=1;break; case 2: increy=-1;increx=-2;break; case 3: increy=-1;increx=+2;break; case 4: increy=+1;increx=-2;break; case 5: increy=+1;increx=+2;break; case 6: increy=+2;increx=-1;break; case 7: increy=+2;increx=+1;break; } if(y+increy>=szy||y+increy<0||x+increx>=szx||x+increx<0) continue; else if(chess[x+increx][y+increy]==0) { DFS(y+increy,x+increx,szy,szx); } } if(path==szy*szx) { //cout<<"result:"<<rec<<endl; exist=1; } else{ path--; rec.erase(rec.end()-1); rec.erase(rec.end()-1); //cout<<"Delete:"<<rec<<endl; chess[x][y]=0; } } int main() { int instan,p,q,i,j,k; cin>>instan; for(i=0;i<instan;i++) { exist=0; memset(chess,0,sizeof(chess)); cin>>p>>q; cout<<"Scenario #"<<i+1<<":"<<endl; for(j=0;j<q;j++) { for(k=0;k<p;k++) { path=0; rec.clear(); //cout<<"Start from "<<k<<" "<<j<<":"<<endl; DFS(j,k,q,p); if(exist==1) { cout<<rec<<endl; break; } } if(exist==1) { break; } } if(exist==0) cout<<"impossible"<<endl; cout<<endl; } return 0; }
相关文章推荐
- poj 2488 A Knight's Journey 【骑士周游 dfs + 记忆路径】
- POJ2488-A Knight's Journey【骑士游历】
- POJ_2488——骑士遍历棋盘,字典序走法
- poj—2488骑士的旅程
- POJ 2488 A Knight's Journey(DFS——骑士周游问题)
- poj2488--A Knight's Journey(dfs,骑士问题)
- poj_2488_A Knight's Journey_骑士周游问题
- poj 2488 骑士的旅行
- poj 2488 骑士游历
- poj 2488 dfs(骑士环游世界)
- poj 2488 A Knight's Journey 【骑士周游 dfs + 记忆路径】
- A Knight's Journey(POJ_2488)
- POJ 2488 A Knight's Journey(简单搜索)
- [ACM训练] 算法初级 之 搜索算法 之 深度优先算法DFS (POJ 2251+2488+3083+3009+1321)
- poj 2488
- POJ--2488 A Knight's Journeyb
- POJ-2488 A Knight's Journey
- poj2488.特坑的一题
- POJ 2488
- poj 2488 A Knight's Journey