C++ ① B = k * E ② 循环矩阵,每一行移一位
#include <iostream> using namespace std; int main() { int n, k; // 严格来说,一行/列不能出现重复元素,但题目未要求 // 仅要求所有元素都是非负整数 -- B = k * E cin >> n >> k; for (int i=0; i<n; i++) { for (int j=0; j<n; j++) { if (i==j) cout << k << ' '; else cout << 0 << ' '; } cout << endl; } } // 64 位输出请用 printf("%lld")
② 适合求解:每个元素为正整数,且每一行/列不出现相同元素 要求 n(n+1)/2 <= k;但本题不要求
#include <iostream> using namespace std; int main() { int n, k; cin >> n >> k; int e1=k/n, e2=e1+k%n; for (int i=0; i<n; i++) { for (int j=0; j<n-i-1; j++) { cout << e1 << ' '; } cout << e2 << ' '; for (int j=n-i; j<n; j++) { cout << e1 << ' '; } cout << endl; } } // 64 位输出请用 printf("%lld")