C++寻找鞍点
C++寻找鞍点
任务描述
找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列最小(也可能没有鞍点)。
测试输入:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
预期输出:
a[0][4]=5
测试输入:
1 1 1 1 2
1 1 1 2 1
1 1 2 1 1
1 2 1 1 1
;
预期输出:
不存在鞍点!
源代码:
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
// 请在此添加代码
/********** Begin *********/
int i,j,k,isfind=0;
int max,max_i,max_j,min;
int a[4][5];
for(i=0;i<4;i++){
for(j=0;j<5;j++){
cin>>a[i][j];
}
}
//max=a[0][0];
for(i=0;i<4;i++){
//找到改行最大值
max=a[i][0];
max_i = i;
max_j = 0;
for(j=0;j<5;j++){
if(a[i][j]>max){
max = a[i][j];
max_i = i;
max_j = j;
}
}
//找到该列最小值
min = a[i][max_j];
for(k=0;k<4;k++){
if(a[k][max_j]<min){
min = a[k][max_j];
}
}
if(max==min){
isfind=1;
printf("a[%d][%d]=%d",max_i,max_j,max);
}
}
if(isfind==0)printf("不存在鞍点!");
/********** End **********/
return 0;
}