1 条题解
-
0
C++ :
#include <bits/stdc++.h> using namespace std; //棋盘大小及起止位置 int n,m,s1,s2,t1,t2; int a[10][10];//存放棋盘 int d[10][10];//到每个位置的最短路径 //dep:到该点的步数 void fun(int x,int y,int dep){ //如果走到这个位置的步数比假设的少(也可以防止死循环) if(dep < d[x][y]){ d[x][y] = dep; //八个方向探测 if(x-1>=1&&y-2>=1) fun(x-1,y-2,dep+1); if(x-2>=1&&y-1>=1) fun(x-2,y-1,dep+1); if(x-2>=1&&y+1<=m) fun(x-2,y+1,dep+1); if(x-1>=1&&y+2<=m) fun(x-1,y+2,dep+1); if(x+1<=n&&y+2<=m) fun(x+1,y+2,dep+1); if(x+2<=n&&y+1<=m) fun(x+2,y+1,dep+1); if(x+2<=n&&y-1>=1) fun(x+2,y-1,dep+1); if(x+1<=n&&y-2>=1) fun(x+1,y-2,dep+1); } } int main(){ cin>>n>>m>>s1>>s2>>t1>>t2; for(int i = 1;i <= n;i++){ for(int j = 1;j <= m;j++){ d[i][j] = INT_MAX;//先设置为最大 } } fun(s1,s2,0); cout<<d[t1][t2]<<endl; }
- 1
信息
- ID
- 2358
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者