输入1 个正整数 n (1≤n≤6)和n 阶方阵中的元素,如果方阵中每一行的最大元素值都相等, 输出"YES", 否则, 输出"NO"。其中main函数已经给出。 【输入形式】 共n+1行 第1行输入n的值 第2行开始输入n行n列的矩阵,数据之间用空格分隔 ………………
时间: 2024-12-31 21:49:46 浏览: 15
这是一个编程问题,涉及到判断给定的n阶方阵是否满足条件。首先,你需要读取用户输入的n和方阵元素,然后遍历每个元素,找到每行的最大值,并记录下所有的最大值。如果所有行的最大值都相等,则返回"YES";否则,返回"NO"。
以下是解决这个问题的一个基本步骤:
1. 使用主函数`main()`接收输入的n和方阵数据。
2. 初始化一个变量`max_value`,用于存储所有行的最大值,初始设置为0。
3. 使用两层循环,外层循环遍历行,内层循环遍历列,更新当前行的最大值。
4. 每次更新完一行的最大值后,检查它是否等于之前记录的最大值`max_value`,如果不相等,直接返回"No"。
5. 遍历结束后,如果所有行的最大值都与`max_value`匹配,返回"Yes"。
下面是一个伪代码示例:
```c++
int main() {
int n;
scanf("%d", &n);
// 创建一个二维数组A[n][n]来存储矩阵
int A[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &A[i][j]);
}
}
int max_value = A[0][0]; // 初始最大值假设为第一行第一个元素
// 检查所有行的最大值是否一致
for (int i = 1; i < n; i++) {
int row_max = find_max_row(A, i); // 找到某一行的最大值
if (row_max != max_value) {
printf("NO\n");
return 0;
}
max_value = row_max; // 更新最大值
}
printf("YES\n"); // 所有行最大值一致,所以返回YES
}
// 辅助函数,找出给定行的最大的元素
int find_max_row(int A[][n], int row) {
int max = A[row][0];
for (int j = 1; j < n; j++) {
if (A[row][j] > max) {
max = A[row][j];
}
}
return max;
}
```
阅读全文