【CodeForces 625C】K-special Tables

把1到n*n填在n*n的格子里。要求每一行都是递增的,使第k列的和最大。

分析

第k列前的格子1 2 .. 按要求填到满格,然后第k列及后面的格子,都从左到右填递增1的数。

第k列的和再加起来,我很矫情地求了公式=_=

代码

#include<cstdio>
int n,k;
int a[505][505];
int main()
{
    scanf("%d%d",&n,&k);
    int m=1;

    for(int i=1; i<=n; i++)
        for(int j=1; j<k; j++)
        {
            a[i][j]=m++;
        }
    for(int i=1; i<=n; i++)
        for(int j=k; j<=n; j++)
        {
            a[i][j]=m++;
        }
    printf("%d
",(n*(n-2+k)+k+1)*n/2);
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=n; j++)
        {
            printf("%d ",a[i][j]);
        }
        printf("
");
    }
    return 0;
}
原文地址:https://www.cnblogs.com/flipped/p/5221664.html