{"title":"题目描述:\n求一个n行m列数阵中的马鞍数,输出它的位置。所谓马鞍数,是指在行上唯一的最小而在列上唯一的最大的数。如下:\nn=5 m=5\n5 6 7 8 9\n4 5 6 7 8\n3 4 5 2 1\n2 3 4 9 0\n1 2 5 4 8\n则1行1列上的数就是马鞍数。\n输入:\n共n+1行,第一行:nm(n,m<10)\n第2到n+1行:每行m个整数(每个数都<10)\n输出:\n输出若干行:如果存在马鞍数,则输出所有马鞍数,每行一个,为行和列以及马鞍数。\n如果不存在马鞍数,则输出“not exit”。\n样例输入1:\n2 2\n1 1\n1 1\n样例输出1:\nnot exit\n用C++内容:#include \nusing namespace std;\n\nint main() {\n int n, m;\n cin >> n >> m;\n \n int matrix[n][m];\n \n // 输入矩阵\n for (int i = 0; i < n; i++) {\n for (int j = 0; j < m; j++) {\n cin >> matrix[i][j];\n }\n }\n \n bool found = false;\n \n // 检查每一行的最小值是否为该行的唯一最小值\n for (int i = 0; i < n; i++) {\n int min_val = matrix[i][0];\n int min_col = 0;\n for (int j = 1; j < m; j++) {\n if (matrix[i][j] < min_val) {\n min_val = matrix[i][j];\n min_col = j;\n }\n }\n \n bool is_min_unique = true;\n for (int k = 0; k < m; k++) {\n if (matrix[i][k] == min_val && k != min_col) {\n is_min_unique = false;\n break;\n }\n }\n \n // 如果该行的最小值是唯一的,并且该列的最大值是唯一的,那么找到了一个马鞍数\n if (is_min_unique) {\n int max_val = matrix[0][min_col];\n for (int l = 1; l < n; l++) {\n if (matrix[l][min_col] > max_val) {\n max_val = matrix[l][min_col];\n }\n }\n \n bool is_max_unique = true;\n for (int m = 0; m < n; m++) {\n if (matrix[m][min_col] == max_val && m != i) {\n is_max_unique = false;\n break;\n }\n }\n \n if (is_max_unique) {\n cout << "Row: " << i+1 << ", Column: " << min_col+1 << ", Value: " << min_val << endl;\n found = true;\n }\n }\n }\n \n if (!found) {\n cout << "not exit" << endl;\n }\n \n return 0;\n}\n


原文地址: https://www.cveoy.top/t/topic/p5nH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录