20分求救!!

P1048 [NOIP2005 普及组] 采药

问题出在这里: ```cpp int dp[t+1][m+1]; int w[m];//重量(时间) int v[m];//价值 ``` 开数组只能用常量或一个数,不能用变量,否则编译器它没法给你开数组 把代码这样改一下就AC了: ```cpp #include <iostream> #include <algorithm> using namespace std; int main(){ int t,m;//容量,个数 cin>>t>>m; int dp[1005][105]; int w[105];//重量(时间) int v[105];//价值 int data1,data2; for(int i=0;i<m;i++){cin>>w[i+1]>>v[i+1];} for(int i=0;i<t+1;i++){dp[i][0]=0;} for(int i=0;i<m+1;i++){dp[0][i]=0;} for(int j=1;j<m+1;j++){ for(int i=1;i<t+1;i++){ if(w[j]>i){ dp[i][j]=dp[i][j-1];} else{ data1=dp[i][j-1];//不装 data2=dp[i-w[j]][j-1]+v[j];//装 dp[i][j]=max(data1,data2); } } } cout<<dp[t][m]; } ```
by AZYDLL @ 2023-07-30 22:09:25


数组开小了 ``` int w[m]; ``` j从1到m 但是数组w的范围是0到m-1 ``` for(int j=1;j<m+1;j++){ //1到m for(int i=1;i<t+1;i++){ if(w[j]>i){ //0到m-1 ``` 所以数组开大点就行 ``` int w[m+5]; ```
by ju_luohuo_ruo @ 2023-08-11 09:56:59


|