求助大佬们一个关于DP时循环的问题(见下面注解)(上面的太丑了重发一遍)
for(int i = head[u];i;i = t[i].next) //这里其实可以用转化思想转化为背包问题
```cpp
{
int v = t[i].to; if(v == fth)continue;
Dfs2(v,u);
for(int j = siz[u];j >= 1; j --) //为什么一定要先枚举 j 再枚举 k 呢?(@—@)
{
for(int k = 0; k <= min(siz[v],j); k ++) //为何把这一行与上面枚举j的一行调换后就不行了?
{
if(dp[u][j-k] == DNF)continue;
dp[u][j] = max(dp[u][j],dp[u][j-k]+dp[v][k]);
}
}
}
谢谢好心人.......
```
by GuessYCB @ 2017-10-12 21:30:30
貌似会多算>\_<用已经更新的值再去更新
by IceWa @ 2017-10-29 12:26:20
@[GuessYCB](/space/show?uid=47599)
$ycb$太强啦
考古
by Tyher @ 2018-11-02 16:04:07
@[Tyher](/space/show?uid=66915)
tyh太强啦
考古
by GuessYCB @ 2018-11-02 17:36:00
@[Tyher](/space/show?uid=66915)
$tyh$太强啦
考古
by GuessYCB @ 2018-11-02 17:36:12