一个小细节的疑惑

P1434 [SHOI2002] 滑雪

暴力出奇迹NB @ 2020-10-22 23:09:39

下面是样例都没过的代码:

int tmp= ??? ;
    for(int i=1;i<=4;i++){
        int xx=x+dx[i],yy=y+dy[i];
        if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&a[xx][yy]<a[x][y])
            tmp=max(tmp,dfs(xx,yy)+1);
    }
    return f[x][y]=tmp;

经过测试,我发现tmp的取值竟然可以改变f[x][y]的值?! 有没有大佬告诉我这是为啥?


by E9BE99E8888CE585B0 @ 2020-10-22 23:11:12

我发现tmp的取值竟然可以改变f[x][y]的值

这不是废话吗(


by twelveZ @ 2020-10-22 23:11:25

给我看傻了,为啥不能


by E9BE99E8888CE585B0 @ 2020-10-22 23:11:35

取个INT_MAX试试?


by 蒟蒻炒扇贝 @ 2020-10-22 23:12:34

那肯定啊,你下面都赋值了(


by houyinuo @ 2020-10-22 23:18:29

return f[x][y]=tmp;

这句是摆设?


by 暴力出奇迹NB @ 2020-10-22 23:21:07

@rubbish 我不是取max吗???


by 暴力出奇迹NB @ 2020-10-22 23:23:05

啊,对不起,要是中间判断没执行就是tmp了

好丢脸


by 丧黑福造 @ 2020-10-22 23:23:09

return f[x][y]=tmp;

这句话等价于

f[x][y]=tmp;
return f[x][y];

by 做梦想Peach @ 2020-10-22 23:31:41

%%%


|