2026/3/24 16:03:15
网站建设
项目流程
网站建设文案有趣,安徽seo推广公司,wordpress做微博,东莞樟木头网站建设公司7-16 矩阵鞍点分数 5作者 cjyoleon单位 哈尔滨理工大学鞍点指的是矩阵中的一个元素#xff0c;它是所在行的最大值#xff0c;并且是所在列的最小值。例如#xff0c;在下面的例子中#xff0c;第4行第1列的元素就是鞍点#xff0c;值为8 #xff1a;11 3 5 6 9
12 4 7 8…7-16 矩阵鞍点分数 5作者 cjyoleon单位 哈尔滨理工大学鞍点指的是矩阵中的一个元素它是所在行的最大值并且是所在列的最小值。例如在下面的例子中第4行第1列的元素就是鞍点值为8 11 3 5 6 9 12 4 7 8 10 10 5 6 9 11 8 6 4 7 2 15 10 11 20 25给定一个 m * n 的矩阵寻找这个矩阵的鞍点。如果存在鞍点输出鞍点所在的行、列及其值如果存在多个先输出行数更小的行数相同先输出列数最小的如果不存在输出No。输入格式:输入包括若干行。第一行包括两个[1, 30]区间内的整数 m 和 n分别表示矩阵的行数和列数。接下来 m 行每行 n 个 [1, 100]区间内的整数为 m 行 n 列的矩阵数据。每行各整数之间以空格分隔。输出格式:假设矩阵中有 k 个鞍点则有 k 行输出。每行输出三个整数分别是一个鞍点所在的行、列值以及该鞍点的值。各个值之间以空格分隔。如果矩阵中没有鞍点则输出No。#includeiostream using namespace std; int main() { int m, n; // 矩阵大小限制在题目要求的30以内50足够 int arr[50][50]; int row_max[50]; // 存储每行的最大值 int col_min[50]; // 存储每列的最小值 // 输入矩阵行数和列数 cin m n; // 输入矩阵元素 for (int i 0; i m; i) { for (int j 0; j n; j) { cin arr[i][j]; } } // 计算每行的最大值 for (int i 0; i m; i) { row_max[i] arr[i][0]; // 初始化为该行第一个元素 for (int j 1; j n; j) { if (arr[i][j] row_max[i]) { row_max[i] arr[i][j]; } } } // 计算每列的最小值 for (int j 0; j n; j) { col_min[j] arr[0][j]; // 初始化为该列第一个元素 for (int i 1; i m; i) { if (arr[i][j] col_min[j]) { col_min[j] arr[i][j]; } } } int count 0; // 统计鞍点数量 // 遍历所有元素按行优先、列次之的顺序检查鞍点 for (int i 0; i m; i) { for (int j 0; j n; j) { // 同时满足行最大和列最小 if (arr[i][j] row_max[i] arr[i][j] col_min[j]) { cout i 1 j 1 arr[i][j] endl; count; } } } // 无鞍点时输出No if (count 0) { cout No endl; } return 0; }