2 条题解
-
0
#include<bits/stdc++.h> using namespace std; int n,m,x,y,s,t; char a[100][100]={'\n'}; int b[100][100]; int fx[9]={0,2,1,-1,-2,-2,-1,1,2}; int fy[9]={0,1,2,2,1,-1,-2,-2,-1}; void dfs(int x,int y,int k) { b[x][y]=k; a[x][y]='1'; int tx,ty; for(int i=1;i<=8;i++) { tx=x+fx[i]; ty=y+fy[i]; if(a[tx][ty]=='0'&&b[tx][ty]>k+1) { dfs(tx,ty,k+1); a[tx][ty]='0'; } } } int main(){ cin>>n>>m>>x>>y>>s>>t; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { a[i][j]='0'; b[i][j]=INT_MAX; } } dfs(x,y,0); cout<<b[s][t]; return 0; } -
0
#include <bits/stdc++.h> using namespace std; bool vis[10][10]; int n,m,x,y,s,t; int dx[8]={2,1,-2,-1,2,1,-2,-1}; int dy[8]={1,2,1,2,-1,-2,-1,-2}; int mi=INT_MAX; void dfs(int x,int y,int st){ if(xs&&yt){ mi=min(mi,st); return ; } for(int i=0;i<8;i++){ int nx=x+dx[i]; int ny=y+dy[i]; if(nx<1||nx>n||ny<1||ny>m) continue; if(vis[nx][ny]==1) continue; vis[nx][ny]=1; dfs(nx,ny,st+1); vis[nx][ny]=0; } } int main(){ cin>>n>>m>>x>>y>>s>>t; vis[x][y]=1; dfs(x,y,0); cout<<mi; return 0; }
- 1
信息
- ID
- 503
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- (无)
- 递交数
- 158
- 已通过
- 56
- 上传者