把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*(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("\n");
    }
    return 0;
}

 

相关文章:

  • 2022-12-23
  • 2022-02-15
  • 2022-12-23
  • 2021-06-08
  • 2021-04-03
  • 2021-05-18
  • 2021-05-23
  • 2022-12-23
猜你喜欢
  • 2022-01-06
  • 2021-09-25
  • 2022-12-23
  • 2021-12-07
  • 2021-09-07
  • 2021-12-29
  • 2022-12-23
相关资源
相似解决方案