1 条题解

  • 0
    @ 2024-8-16 11:34:20
    #include<bits/stdc++.h>
    using namespace std;
    const int N=405; 
    int n,m;
    int x,y;
    int mp[N][N];
    int dx[]={-2,-2,-1,-1,2,2,1,1}; 
    int dy[]={-1, 1, 2,-2,1,-1,2,-2};   
    void dfs(int now,int x,int y){
        if(now>=400) return ;
        if(mp[x][y] != -1 && now >= mp[x][y]){
            return ;
        }
        if(x < 1 || y < 1 || x > n || y > m){
            return ;
        }
        mp[x][y]=now;
        for (int i=0;i<8;i++) {
            int nx=x+dx[i];
            int ny=y+dy[i];
            dfs(now+1,nx,ny);
        }
    }
    int main(){
        memset(mp,-1,sizeof mp);
        cin>>n>>m>>x>>y;
        dfs(0,x,y);
        for(int i=1;i<= n;i++){
            for(int j=1;j<=m;j++) {
                cout<<setw(5)<<left<<mp[i][j];
            }
            cout << endl;
        }
        return 0;
    }
    

    信息

    ID
    101
    时间
    1000ms
    内存
    128MiB
    难度
    10
    标签
    递交数
    2
    已通过
    2
    上传者