1
xjx0524 2014 年 10 月 28 日 score=score-a[i][j];这句放到条件语句外面来
|
2
etolew 2014 年 10 月 28 日 同小白,路过。。。
22-24行改成 dfs(i+1,j); score=score-a[i+1][j]; dfs(i+1,j+1); score=score-a[i+1][j+1]; dfs调用之后是要恢复到上一步, dfs(i+1,j)里是把score加了a[i+1][j], 所以应该减去它。 dfs(i+1,j+1)同理。 |
3
spencerqiu OP @xjx0524
虽然好像还是不对,按照样例输入,输出的是 24 。不过能不能粗略讲讲这么做的原因? |
4
spencerqiu OP |
5
spencerqiu OP @etolew
奇怪……执行之后还是不对耶…… |
6
spencerqiu OP 按照楼上两位大大的修改方法,虽然都不对,但是不对的是一样的,都是 24 ……
好神奇😂 |
7
etolew 2014 年 10 月 28 日
|
8
xjx0524 2014 年 10 月 28 日
@etolew 你这么改是不对的啊,楼主的做法是当前这层递归score就加上遍历到的结点值,你减去下一层的值显然不对。
@spencerqiu 我跟你说的那个改法原因是if(i==n)之后要返回上一层递归了但是没有减去当前的a[i][j] |
9
xjx0524 2014 年 10 月 28 日
@etolew 不好意思看错了,你把score=score-a[i][j];这句话也删了,结果是对的。但是逻辑上最好不要这样做,当层做的改变应该当层就恢复。
|
10
ffffwh 2014 年 10 月 29 日
这个用DFS是依然会有重复计算的吧
|
11
oaix 2014 年 10 月 29 日
方法错了,应该使用 DP。
|