#include <iostream> #include <iomanip> using namespace std; int main() { int n; cin >> n; int matrix[100][100] = {0}; // 填充右上到左下对角线元素 for (int i = 0; i < n; i++) { matrix[i][n-1-i] = n - i; } // 填充对角线右下方的元素 for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i + j >= n - 1 && j < n - 1 - i) { int left = (j > 0) ? matrix[i][j-1] : 0; int up = (i > 0) ? matrix[i-1][j] : 0; matrix[i][j] = left + up; } } } // 输出方阵 for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (matrix[i][j] == 0) { cout << setw(5) << " "; } else { cout << setw(5) << matrix[i][j]; } } cout << endl; } return 0; } /************************************************************** Problem: 1207 User: fuyijun Language: C++ Result: Wrong Answer ****************************************************************/