求教一下为什么不能这样写啊

P1048 [NOIP2005 普及组] 采药

@[Ichigaya_Arisa](/space/show?uid=70850) 我知道了,重覆盖 ``` #include<bits/stdc++.h> using namespace std; #define re register #define un unsigned int t,m; int v[105],w[105]; int dp[106][1005]; int main() { int ans = 0; for(re un int i = 1; i <= 105; ++i)memset(dp[i],-0x3f,sizeof(dp[i])); scanf("%d %d",&t,&m); for(re un int i = 1; i <= m; ++i){ scanf("%d %d",&v[i],&w[i]); } dp[0][0] = 0; for(int i = 1; i <= m; ++i){ for(int j = 0; j <= t; ++j){ dp[i][j] = max(dp[i - 1][j],dp[i][j]); if(j + v[i] <= t)dp[i][j + v[i]] = max(dp[i][j + v[i]],dp[i - 1][j] + w[i]); ans = max(dp[i][j],ans); } } printf("%d",ans); } ```
by moye到碗里来 @ 2018-07-09 21:42:41


这样就能a
by moye到碗里来 @ 2018-07-09 21:44:17


@[Ichigaya_Arisa](/space/show?uid=70850) 由于是往之后的去更改,而对于节点的赋值在更改之后,这样会造成节点的重覆盖导致答案不能更新
by moye到碗里来 @ 2018-07-09 21:46:18


上一页 |