题目大意
在一个\(n\times n\)的矩阵上填入1到\(n^2\)的数,使得每一行单调递增同时第\(k\)列的元素和最大。
做法
多想想,很简单的。不会就看代码吧,真的很简单。
代码
#include <bits/stdc++.h>
using namespace std;
const int maxn = 500 + 5;
int res[maxn][maxn];
int k, n;
int main() {
ios::sync_with_stdio(0);
cin >> n >> k;
int tr = n * n, ans = 0;
for (int i = 1; i <= n; i++)
for (int j = n; j >= k; j--)
res[i][j] = tr--;
for (int i = 1; i <= n; i++)
for (int j = k - 1; j >= 1; j--)
res[i][j] = tr--;
for (int i = 1; i <= n; i++)
ans += res[i][k];
cout << ans << endl;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
cout << res[i][j] << (j == n ? '\n' : ' ');
return 0;
}