新手求大佬,全错了。。。

P1048 [NOIP2005 普及组] 采药

1.n与W输反了 2.第14行 ```cpp for(int j=n;j>=0;j--) ``` 应改为 ```cpp for(int j=W;j>=0;j--) ``` 3.第16行 ```cpp max(bag[i-1][j-w[i]]+v[i],bag[i-1][j]); ``` 应改为 ```cpp bag[i][j]=max(bag[i-1][j-w[i]]+v[i],bag[i-1][j]); ``` AC code: ```cpp #include<iostream> #include<cstring> using namespace std; int main(){ int n,W; cin>>W>>n; int bag[n+1][W+1]; int w[n+1]={0},v[n+1]={0}; memset(bag,0,sizeof(bag)); for(int i=1;i<=n;i++){ cin>>w[i]>>v[i]; } for(int i=1;i<=n;i++){ for(int j=W;j>=0;j--){ if(j>=w[i]){ bag[i][j]=max(bag[i-1][j-w[i]]+v[i],bag[i-1][j]); }else{ bag[i][j]=bag[i-1][j]; } } } cout<<bag[n][W]; /* W是背包重量,w是每个物品重量 */ } ```
by Tirpitz__ @ 2021-06-06 10:55:48


@[LAL&KOBE](/user/446894)
by Tirpitz__ @ 2021-06-06 14:37:09


@[Tirpitz__](/user/64974) 谢谢
by cmathFPV @ 2021-06-07 08:25:04


|