问个问题

P1048 [NOIP2005 普及组] 采药

@[ysdmz](/user/904411) 不用清零啊,全局变量初始值默认为0
by return_TLE @ 2023-08-03 16:45:03


```c #include<bits/stdc++.h> using namespace std; int main(){ int w[105],c[105],dp[1005],t,m; cin>>t>>m; for(int i=1;i<=m;++i) cin>>w[i]>>c[i]; for(int i=1;i<=m;++i) for(int j=t;j>=w[i];--j) dp[j]=max(dp[j],dp[j-w[i]]+c[i]); cout<<dp[t]<<endl; return 0; } ``` 为什么这就不行?
by ysdmz @ 2023-08-03 16:46:50


@[return_TLE](/user/912241)
by ysdmz @ 2023-08-03 16:47:00


@[ysdmz](/user/904411) 因为局部变量的初始值是不确定的,dp数组递推时在原有值上取最大值,如果运行的时候运气不好出现了一个特别大的数字的话就怎么推也不能覆盖下去错误答案,然后这个点就错了
by return_TLE @ 2023-08-03 16:51:32


@[return_TLE](/user/912241) 栓Q,此贴结
by ysdmz @ 2023-08-03 17:20:01


|