llllmz

导航

A Knight's JourneyC++

题目看半天看不懂。

題目把我恶心坏了。看网上说按字典顺序输出,到底是什么意思半天没搞懂。

#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;
}

 

结果如下:

posted on 2024-02-03 23:05  神奇的萝卜丝  阅读(23)  评论(0)    收藏  举报