跳馬問題
2021-11-28 09:49 作者:進(jìn)擊的水瓶 | 我要投稿
/*事先聲明:本文是以深搜算法為基礎(chǔ)寫出,用于對跳馬問題進(jìn)行排列(只向右和上兩方向移動),編譯語言為C++,使用編輯器為DevC++ 5.11,如有侵權(quán)請及時聯(lián)系,會立即刪除。在未經(jīng)本人許可禁止用于商用,改寫,感謝支持!*/
#include<bits/stdc++.h>
using namespace std;
int tot=0,a[101][3];
int x[4]={1,2,2,1};
int y[4]={2,1,-1,-2};
int c,g;
int shuchu(int s){
tot=tot+1;cout<<"<"<<tot<<">"<<" ";
for(int i=1;i<s;i++){cout<<a[i][1]<<","<<a[i][2]<<"->";}
cout<<a[s][1]<<","<<a[s][2]<<endl;}
int tiaoma(int t){
for(int i=0;i<4;i++){
if(a[t-1][1]+x[i]<=g&&a[t-1][2]+y[i]<=c&&a[t-1][2]+y[i]>=0){
a[t][1]=a[t-1][1]+x[i];a[t][2]=a[t-1][2]+y[i];
if(a[t][1]==g&&a[t][2]==c){shuchu(t);}
else{tiaoma(t+1);}}}}
int main(){
a[1][1]=0,a[1][2]=0;
cout<<"請輸入棋盤大小:";
cin>>c>>g;
tiaoma(2);
cout<<"total:"<<tot;
return 0;}
標(biāo)簽: