题意
把1到n*n填在n*n的格子里。要求每一行都是递增的,使第k列的和最大。
分析
第k列前的格子1 2 .. 按要求填到满格,然后第k列及后面的格子,都从左到右填递增1的数。
第k列的和再加起来,我很矫情地求了公式=_=
代码
#include<cstdio>
int n,k;
int a[][];
int main()
{
scanf("%d%d",&n,&k);
int m=; for(int i=; i<=n; i++)
for(int j=; j<k; j++)
{
a[i][j]=m++;
}
for(int i=; i<=n; i++)
for(int j=k; j<=n; j++)
{
a[i][j]=m++;
}
printf("%d\n",(n*(n-+k)+k+)*n/);
for(int i=; i<=n; i++)
{
for(int j=; j<=n; j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
return ;
}