2 条题解

  • 0
    @ 2025-12-25 19:36:30
    #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
      @ 2025-12-23 13:17:11

      #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
      上传者