解题思路:
1.由题意得,鞍点的定义是某行的最大值,并且是所在列的最小值,根据这个条件,可以想到要求最大值和最小值
2.定义二维数组,并且输入数据,创建循环嵌套开始遍历,首先先找到每行的最大值,所以在每行的遍历前,定义max=0,如果a[i][j]>max,则max=a[i][j];并且要把此时的列号记录下来,ans=j;执行完内循环后,此时max已经存储了最大值,并且ans记录了最大值的列号
3.第三步,根据这个列开始遍历整列的数据,找到最小值min,所以每次查找整列的最小值是,min定义一个很大的值,min=10000000;for(int i=1;i<=5;i++),if(a[i][ans]
4.找到最大值和最小值的时候判断是否相等,如果相等,输出res,ans,和a[res][ans]的值,结束程序
5.如果遍历完所有条件都没有找到,则输出corrupt
- #include
- using namespace std;
- int a[6][6];
- int main()
- {
- int ans,res;
-
- for(int i=1;i<=5;i++)
- for(int j=1;j<=5;j++)
- cin>>a[i][j];//输入数据到二维数组中
-
- for(int i=1;i<=5;i++)
- {
- int max=0,min=10000000;//每次都初始化最大值和最小值
-
- for(int j=1;j<=5;j++)//遍历每一行,找到最大值
- {
- if(a[i][j]>max)
- {
- max=a[i][j];
- ans=j;//将最大值的列数编号赋值给ans
- }
- }
-
- for(int i=1;i<=5;i++)//遍历ans列
- {
- if(a[i][ans]
//找到次列的最小值 - {
- min=a[i][ans];
- res=i;//并将该值的行号赋值给res
- }
- }
-
- if(min==max)//如果此行的最大值等于该列的最小值
- {
- cout<
" "<" "<//输出行号,列号,元素值 - return 0;//结束程序
- }
- }
-
- cout<<"not found";//如果没有,输出not found
- return 0;
- }