您的位置:首页 > 其它

UVa439(DFS实现)

2015-07-26 20:36 316 查看
#include <iostream>
using namespace std;

string beginstr;
string endstr;
int endx;
int endy;
int minstep;
int direct[8][2]={{2,1},{2,-1},{1,2},{1,-2},{-1,2},{-1,-2},{-2,1},{-2,-1}};

void dfs(int x,int y,int step){
if(step>=minstep)
return;
if(x>=8||x<0||y>=8||y<0)
return;
if(x==endx&&y==endy){
if(step<minstep)
minstep=step;
return;
}

for(int i=0;i<8;i++){
int dx=x+direct[i][0];
int dy=y+direct[i][1];
dfs(dx,dy,step+1);
}

}

int main(){

while(cin>>beginstr>>endstr){

minstep=999;
int x=8-(beginstr[1]-'0');
int y=beginstr[0]-'a';

endx=8-(endstr[1]-'0');
endy=endstr[0]-'a';

dfs(x,y,0);
cout<<minstep<<endl;

}
return 0;
}


一开始想得太复杂
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: