题目看半天看不懂。
題目把我恶心坏了。看网上说按字典顺序输出,到底是什么意思半天没搞懂。
#include<iostream>
#include<string>
using namespace std;
int d[8][2]={
{-1,-2},{1,-2},{-2,-1},{2,-1},{-2,1},{2,1},{-1,2},{1,2}
};
int visit[8][8]={0};
bool DFS(int i,int j,int cur,string& path ,int p,int q){
visit[i][j]=1;
path+=j+'A';
path+=i+'1';
if(p*q==cur) return true;
for(int x=0;x<8;x++){
if(i+d[x][0]>=0 && j+d[x][1] >=0 && j+d[x][1] < q && i+d[x][0]<p && visit[i+d[x][0]][j+d[x][1]] ==0){
if( DFS(i+d[x][0],j+d[x][1],cur+1,path,p,q) ){
return true;
}
}
}
visit[i][j]=0;
path.erase(path.size()-2,2);
return false;
}
int main(){
int n=0;
cin >> n;
for(int i=1;i<=n;i++){
for(int x=0;x<8;x++){
for(int j=0;j<8;j++){
visit[x][j]=0;
}
}
int cur=1;
int p =0,q=0;
cin >> p >> q;
string path;
if(DFS(0,0,cur,path,p,q)){
cout << "Scenario #" << i <<':'<<'\n';
cout << path <<'\n';
}else{
cout << "Scenario #" << i <<':'<<'\n';
cout <<"impossible"<<'\n';
}
cout <<'\n';
}
return 0;
}
结果如下:
标签:cur,int,Knight,visit,C++,Journey,&&,path From: https://www.cnblogs.com/llllmz/p/18005372