cf12E Start of the season(构造,,,)

题意:

给一个偶数N。

构造出一个矩阵。

满足:主对角线上全为0。每一行是0~N-1的一个全排列。矩阵关于主对角线对称。

 

思路:

觉得是智商题,,,,看完题解后觉得不难,但是我就是没想出来。只想到了前面一部分。哎观察力,,,,,

例:N=6

构造:

12345

23451

34512

45123

51234

满足条件。

现在每行要加上一个零。发现主对角线上的数正好是1-5的一个全排列。把它们和0交换,放到每行和每列的末尾。

023451

204513

340125

451032

512304

135240

出来了。。。。。

 

代码:

int n;
int ans[1005][1005];

int main(){

    cin>>n;
    n--;
    rep(i,1,n) ans[1][i]=i;
    rep(i,2,n){
        rep(j,2,n) ans[i][j-1]=ans[i-1][j];
        ans[i][n]=ans[i-1][1];
    }
    rep(i,1,n){
        ans[i][n+1]=ans[i][i];
        ans[i][i]=0;
    }
    rep(i,1,n){
        ans[n+1][i]=ans[i][n+1];
    }

    rep(i,1,n+1){
        rep(j,1,n+1) printf("%d ",ans[i][j]); cout<<endl;
    }


    return 0;
}

 

posted @ 2015-03-03 21:34  fish7  阅读(149)  评论(0编辑  收藏  举报