问题出在这里:
```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