暴力出奇迹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
%%%