结果一直是0,求助!

P1048 [NOIP2005 普及组] 采药

@[CZH944208429](/space/show?uid=187415) max写错了吧
by 浮梦月夜寂ღ @ 2019-06-01 18:27:24


应该是a>b?b:a吧qaq
by 浮梦月夜寂ღ @ 2019-06-01 18:27:56


@[CZH944208429](/space/show?uid=187415) 一个01背包被你写成这样。。。
by t162 @ 2019-06-01 18:28:10


```cpp or ( i = 1 ; i <= m ; i++ ) { for ( j = t ; j >= c[i] ; j-- ) { dp[j] = max ( dp[j] , dp[j - c[i]] + w[i] ) ; } } ``` 不是这样嘛...
by foxdemon @ 2019-06-01 18:34:00


开头少了个f难受了
by foxdemon @ 2019-06-01 18:34:16


@[CZH944208429](/space/show?uid=187415) ``` #include<iostream> using namespace std; int main(){ int t,n,a,b,f[101][1001]; cin>>t>>n; for(int i=1;i<=n;i++){ cin>>a>>b; for(int j=0;j<=t;j++){ if(j>=a)f[i][j]=max(f[i-1][j],f[i-1][j-a]+b); else f[i][j]=f[i-1][j]; } } cout<<f[n][t]; return 0; } ```
by fzhfzh @ 2019-06-01 18:51:46


```cpp #include <iostream> using namespace std; int dp[10100]; int w[10000],c[10000]; int main() { int 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 qzgx_41 @ 2019-07-26 10:33:20


|