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;
}