10 条题解

  • 0
    @ 2025-4-3 9:19:00

    找固定移动模式,模拟即可

    #include <bits/stdc++.h>
    #define int long long
    using namespace std;
    const int N = 110;
    int n,m,a[N][N],b[N][N];
    void solve(){
    cin>>m>>n;
    int x=0,y=n-1,cnt=1,d=0;
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    b[0][n-1] = 1;
    a[0][n-1] = 1;
    while(cnt<n*m){
    while(x<m-1-d&&!a[x+1][y]){
    b[++x][y] = ++cnt;
    a[x][y] = 1;
    }while(y!=d&&!a[x][y-1]){
    b[x][--y] = ++cnt;
    a[x][y] = 1;
    }while(x!=d&&!a[x-1][y]){
    b[--x][y] = ++cnt;
    a[x][y] = 1;
    }
    while(y<n-1&&!a[x][y+1]){
    b[x][++y] = ++cnt;
    a[x][y] = 1;
    }
    d+=1;
    }
    for(int i=0;i<m;i++){
    for(int j=0;j<n;j++){
    printf("%5lld",b[i][j]);
    }printf("\n");
    }
    }
    signed main()
    {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int t=1;
    while(t--)solve();
    return 0;
    }
    

    信息

    ID
    78
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    1257
    已通过
    327
    上传者