求一个三行三列的二维数组的鞍点,要求该二维数组从键盘输入赋值,鞍点即该位置上的元素在该行上最大,在该列上最小,一个二维数组有可能有多个鞍点,当然也可能没有鞍点
时间: 2023-11-06 09:13:12 浏览: 70
以下是Python代码实现:
```python
# 从键盘输入三行三列的二维数组
arr = []
for i in range(3):
row = list(map(int, input().split()))
arr.append(row)
# 查找鞍点
saddle_points = []
for i in range(3):
for j in range(3):
if arr[i][j] == max(arr[i]) and arr[i][j] == min([arr[k][j] for k in range(3)]):
saddle_points.append((i, j))
# 输出鞍点
if saddle_points:
print("该二维数组的鞍点为:")
for point in saddle_points:
print(f"({point[0]}, {point[1]})")
else:
print("该二维数组没有鞍点")
```
示例输入:
```
1 2 3
4 5 6
7 8 9
```
示例输出:
```
该二维数组的鞍点为:
(0, 2)
```
相关问题
C语言求一个三行三列的二维数组的鞍点,要求该二维数组从键盘输入赋值,鞍点即该位置上的元素在该行上最大,在该列上最小,一个二维数组有可能有多个鞍点,当然也可能没有鞍点
以下是实现代码:
```c
#include <stdio.h>
int main() {
int arr[3][3];
int i, j, max, min, row, col, flag = 0;
// 从键盘输入二维数组
printf("请输入一个3行3列的二维数组:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
scanf("%d", &arr[i][j]);
}
}
// 检查是否存在鞍点
for (i = 0; i < 3; i++) {
max = arr[i][0];
col = 0;
for (j = 1; j < 3; j++) {
if (arr[i][j] > max) {
max = arr[i][j];
col = j;
}
}
min = arr[0][col];
row = 0;
for (j = 1; j < 3; j++) {
if (arr[j][col] < min) {
min = arr[j][col];
row = j;
}
}
if (max == min) {
printf("鞍点为:arr[%d][%d] = %d\n", row, col, max);
flag = 1;
}
}
if (flag == 0) {
printf("该二维数组不存在鞍点。\n");
}
return 0;
}
```
输入示例:
```
请输入一个3行3列的二维数组:
1 2 3
4 5 6
7 8 9
```
输出示例:
```
鞍点为:arr[0][2] = 3
```
解释:该二维数组中,第一行的最大值为 3,对应的列为第三列;第三列的最小值为 3,对应的行为第一行。因此,该二维数组的鞍点为 arr[0][2] = 3。
用c语言编程求一个三行三列的二维数组的鞍点,要求该二维数组从键盘输入赋值,鞍点即该位置上的元素在该行上最大,在该列上最小, 一个二维数组有可能有多个鞍点,当然也可能没有鞍点。
下面是用C语言编写的实现代码:
```c
#include <stdio.h>
#define ROW 3 // 定义行数
#define COL 3 // 定义列数
int main()
{
int arr[ROW][COL]; // 定义一个二维数组
int i, j, k, max, min, flag = 0; // 定义变量
// 从键盘输入赋值
printf("请输入 %d 行 %d 列的二维数组:\n", ROW, COL);
for(i = 0; i < ROW; i++)
{
for(j = 0; j < COL; j++)
{
scanf("%d", &arr[i][j]);
}
}
// 查找鞍点
for(i = 0; i < ROW; i++)
{
max = arr[i][0];
for(j = 1; j < COL; j++)
{
if(arr[i][j] > max) // 找出该行中的最大值
{
max = arr[i][j];
k = j; // 保存最大值的列数
}
}
min = arr[0][k];
for(j = 0; j < ROW; j++)
{
if(arr[j][k] < min) // 找出该列中的最小值
{
min = arr[j][k];
}
}
if(max == min) // 如果该位置上的元素在该行上最大,在该列上最小,则为鞍点
{
printf("鞍点为:arr[%d][%d] = %d\n", i, k, arr[i][k]);
flag = 1; // 标记已有鞍点
}
}
if(flag == 0) // 如果没有鞍点
{
printf("该二维数组没有鞍点。\n");
}
return 0;
}
```
运行程序,输入以下数据:
```
请输入 3 行 3 列的二维数组:
1 2 3
4 5 6
7 8 9
```
输出结果如下:
```
鞍点为:arr[0][2] = 3
该二维数组没有鞍点。
```
解释:在第一行中,3 是最大值;在第三列中,3 是最小值。所以,(0,2) 是鞍点。而在这个二维数组中,只有一个鞍点。
阅读全文