三维写法循环的起始和结束完全不理解

P1004 [NOIP2000 提高组] 方格取数

@[w\_y\_c](/space/show?uid=19141) 只走n-1步,分两次走 因为你枚举步数把两次走都包含进去了,所以只是n-1
by 封癫 @ 2017-05-25 16:43:43


@[封癫](/space/show?uid=25815) 不好意思 不太理解你的意思 猜你说的“只走n-1步,分两次走”意思是 只是x的距离总共变了n-1步 但是分两次走又是什么意思呢? 我对这种方法的理解是两个点同时出发 总步数是2\*n-2步 刚刚又看了一下题解 是不是我对这种方法的理解就错了。。
by w_y_c @ 2017-05-25 18:07:05


@[w\_y\_c](/space/show?uid=19141) 观察四维数组的转移方程可知,某人第一次走一步,第二次也必定跟一步。所以我们得出结论::第一次和第二次走的步数一定是相等的。 所以我们用步数,根据x坐标可以减出对应y坐标的值。 而每次这个人都走n-1步。
by 封癫 @ 2017-05-25 18:22:52


@[封癫](/space/show?uid=25815) 不好意思 比较蠢。。。 明白两次的步数一定是相等的 也明白用x的值就可以弄出y的值 但是我觉得就是起点是(1,1)到终点是(n,n)就是2\*n-2步。。 所以我的状态转移方程就是 ```cpp f[l][x1][x2]=a[l-x1+2][x1]+a[l-x2+2][x2]+_max(f[l-1][x1][x2],f[l-1][x1][x2-1],f[l-1][x1-1][x2],f[l-1][x1-1][x2-1]); ``` 然后就只能过样例。。 但是我看到题解里别人的写法都是到2\*n-1和 ```cpp f[l][i][j]=_max()+a[i][k-i+1]+a[j][k-j+1]; ``` 所以非常不能理解。。。
by w_y_c @ 2017-05-25 18:40:04


这个。。。k是啥 @w\_y\_c
by 封癫 @ 2017-05-25 18:46:50


@[w\_y\_c](/space/show?uid=19141) ddd
by 封癫 @ 2017-05-25 18:47:06


|