for(int i = 0;i < e[x].size();i++){
int y = e[x][i];
dp(y);
for(int j = m+1;j >= 1;j--){
for(int k = j-1;k >= 1;k--){
f[x][j] = max(f[x][j], f[x][j-k] + f[y][k]);
}
}
}
把第三层循环改成正序:
for(int i = 0;i < e[x].size();i++){
int y = e[x][i];
dp(y);
for(int j = m+1;j >= 1;j--){
for(int k = 1;k <= j-1;k++){
f[x][j] = max(f[x][j], f[x][j-k] + f[y][k]);
}
}
}
也是AC的
这是为什么?