关于C++函数的一个问题

img


输入:
5
13 2 3
4 0 0
12 4 5
20 0 0
40 0 0
当使用原代码时:正常输出,为81
当把注释下两行更换为注释时:输出为0
这是什么原理?

注意:你所提的问题,这两个代码的差异是,judge函数执行了两次,
影响:你是有一个flag全局变量的,这个函数每次调用,最这个全局变量是有变化的!!!

//你可以把注释改为只执行一次这个函数试试
int t = -1;
if((t = judge(i, 0))<ans)
{
    ans = t; //judge(i, 0) 这个函数执行前你每次有对flag的清空操作啊!!!
}

ajust函数算了两次,你的本意是取出ajust函数的值,判断,然后决定是否赋值,不应该再算一次,有可能值不一样