#C231104A. 构造题(squ)


#C231104A. 构造题(squ)

前言

这个人一次考试四道题怎么才改一道啊?

题目

题目详情 - 构造题(squ) - Super

题解 - 构造题(squ) - Super

代码

我的代码

#include<bits/stdc++.h>
#define For(i,l,r) for(int i=l;i<=r;i++)
#define Rof(i,l,r) for(int i=l;i>=r;i--)
using namespace std;
#define int long long
inline int input(){int x;return cin>>x,x;}
const int N = 3005;
int n,a[N];
signed main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    freopen("squ.in","r",stdin);
    freopen("squ.out","w",stdout);
    cin>>n;
    if(n==2) return cout<<"-1"<<'\n',0;
    if(n==4) return cout<<"1 2 4 3\n4 3 1 2\n3 4 2 1\n2 1 3 4\n",0;
    else if(n&1){
        for(int i=0;i<n;i++) a[i]=i+1;
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                cout<<a[(i+j)%n]<<' ';
            }cout<<'\n';
        }
    }else{
        For(i,1,n-2) cout<<i<<' ';cout<<n<<' '<<n-1<<'\n';
        
        For(i,0,n-2) a[i]=i+1;
        For(i,1,n) a[i+n-2]=i;
        for(int i=1,j=1;i<=n-2;i++,j++){
            for(int k=0;k<=n-2;k++){
                if(k==i-1) cout<<n<<' ';
                else cout<<a[i+k]<<' ';
            }cout<<a[i-1+i]<<'\n';
        }
        
        for(int i=2;i<=n-2;i+=2) cout<<i<<' ';
        for(int i=1;i<=n-1;i+=2) cout<<i<<' ';
        cout<<n<<'\n';
    } 
    return 0;
}

题解代码

#include <bits/stdc++.h>
using namespace std;
const int N=303;
int a[N][N];
int main(){
    freopen("squ.in","r",stdin);
    freopen("squ.out","w",stdout);
    int n;
    cin>>n;
    if(n%2==1){
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                a[i][j]=(i+j)%n;
            }
        }
    }else{
        for(int i=0;i<n-1;i++){
            for(int j=0;j<n-1;j++){
                a[i][j]=(i+j)%(n-1);
            }
        }
        a[n-1][n-1]=n-1;
        for(int i=0;i<n-1;i++){
            int j=(i+n-2)%(n-1);
            a[n-1][j]=a[i][n-1]=a[i][j];
            a[i][j]=n-1;
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            printf("%d ",a[i][j]+1);
        }
        puts("");
    }
}

文章作者: WolfDeer
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 WolfDeer !
  目录