找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。
#include <stdio.h>
//计算出二维数组中行最大值
int max(int a[][3], int col)
{
int max = 0;
int sub = 0;
int i;
for ( i = 0; i < 3; i++)
{
if (max < a[col][i])
{
max = a[col][i];
sub = i;
}
}
//返回出最大值所在列下标
return sub;
}
//计算出二维数组中列最小值
int min(int a[][3], int vol)
{
int min = 0;
int sub = 0;
int i;
for (i = 0; i < 3; i++)
{
if (min > a[i][vol])
{
min = a[i][vol];
sub = i;
}
}
//返回出最小值所在行下标
return sub;
}
void input(int a[][3])
{
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
scanf("%d", &a[i][j]);
}
}
}
void output(int a[][3])
{
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
}
void Find_Val(int a[][3])
{
//单行最大值下标
int max_sub = 0;
int min_sub = 0;
for (int i = 0; i < 3; i++)
{
max_sub = max(a,i);
min_sub = min(a, max_sub);
if (min_sub == i)
{
printf("找到鞍点 %d", a[min_sub][max_sub]);
}
}
}
int main()
{
int a[3][3];
input(a);
output(a);
Find_Val(a);
return 0;
}
答案
找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。