找鞍点程序遇到的问题

img

img


明明执行了第三个if语句为什么else语句还是一直在执行。
明明已经输出了第三个if的语句,不知道为什么还会执行else语句给k计数
还有第三个if不是满足条件再输出min吗,可是不满足的它为什么还是输出了min

条件判断是==,一个等号是赋值,恒成立。
这两个地方=改为==

img

有几个错误:
(1)应该先找每行的最大值,然后判断这个最大值在其所在的列中最小。
(2)if语句中,应该用==来判断,==是逻辑运算符,=是赋值运算符,你用错了
(3)找每行的最大值时,应该先初始化max,否则max会保留上一次运算的最大值,同理,最小值每次也需要初始化一下。
(4)判断鞍点那里,不应该用matrix[n][m]==matrix[i][m]来判断,应该是找到每行最大值所在的列m后,再在m列中找最小值所在的行n,最后判断n是否等于 i 即可。
修改后的运行结果:

img

代码修改如下:

#include <iostream>
using namespace std;
int main()
{
    int matrix[5][5];
    int max=0,min=0,m,n,k=0;
    for(int i=0;i<5;i++)
    {
        for(int j=0;j<5;j++)
        {
            cin >> matrix[i][j];
        }
    }
    //
    for(int i=0;i<5;i++)
    {
        max = matrix[i][0]; //初始化max
        m = 0;
        for(int j=0;j<5;j++)
        {
            if(max < matrix[i][j])
            {
                max = matrix[i][j]; //找到每行的最大值
                m = j; //m记录最大值所在的列
            }
        }
        //找m列最小
        min = matrix[0][m];
        n = 0;
        for(int j=0;j<5;j++)
        {
            if(min > matrix[j][m])
            {
                min = matrix[j][m];
                n = j;
            }
        }
        //如果n等于i,那么就是一个鞍点
        if(n == i)
        {
            if(k==0)
                cout << min;
            else
                cout <<" "<<min;
            k=k+1;
        }
    }
    if(k==0)
        cout <<"not found"<<endl;
    else
        cout <<endl;
    return 0;
}

你确定你的 if 语句中是在比较相等而不是赋值操作?

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

【以下回答由 GPT 生成】

根据你提供的问题描述,我无法确定你的代码中具体出了什么问题。但是我可以提供一些常见的错误和优化建议,希望能够帮到你。请将代码以markdown格式提供,我将尽力帮你解决问题。

  1. 可能的错误:else语句一直执行
  2. 可能原因:if语句的条件不满足,导致else语句执行。
  3. 解决方案:检查if语句的条件是否正确,确保满足条件时才执行if语句,否则执行else语句。可能需要调试代码来查看具体执行的逻辑。

  4. 可能的错误:第三个if语句不满足条件却输出了min

  5. 可能原因:第三个if语句的条件判断有误,可能导致不满足条件的情况下仍然执行了输出min的代码。
  6. 解决方案:检查第三个if语句的条件判断,确保只有满足条件时才输出min。可能需要打印中间变量来查看条件判断的结果是否正确。

  7. 优化建议:简化代码逻辑,提高可读性和可维护性

  8. 使用函数封装具有独立功能的代码块,提高代码的可读性和可维护性。
  9. 优化算法,尽量减少不必要的循环和判断,提高代码的执行效率。

如果你能够提供代码,我可以根据具体情况提供更具体的解决方案。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^