问题标题: 酷町堂:1706 矩阵鞍点

0
0

0
已采纳
李祈乐
李祈乐
新手光能
新手光能

首先,输入矩阵。

然后开始判断,找每行最大值,每列最小值,这时候需要三重循环,

前两个循环遍历每行每列的元素,第三个循环遍历每个元素,

第三个循环每次赋bool型t=true;

对于这个数,如果不是每列最小值或者不是每行最大值,也就是大于每列一个元素或小于每行一个元素,

那么它就不是鞍点。

for(int k=1;k<=5;k++)
            {
                t=true;
                if(a[i][k]>a[i][j]||a[k][j]<a[i][j])
                {
                    t=false;
                    break;
                }

            }

跳出这个循环,继续遍历下一个行和列的元素,如果t一直循环完第三个循环,那么t一直处于true的状态,那么这就是我们要求的鞍点

if(t==true)
            {
                cout<<i<<" "<<j<<" "<<a[i][j];
                return 0;
            }

然后直接输出行列和这个元素,结束整个程序(return 0;)

在这里不需要考虑矩阵存在多个鞍点。

如果一直没有输出,那么矩阵不存在鞍点,程序没有结束,这时,在最后补上

cout<<"not found";
    return 0;

 

0
我要回答