自己测试没问题,系统为什么报段错误,求大神指导
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n = 0;
cin>>n;
vector<int> data;
data.reserve(n);
for(int i = 0 ; i < n ;++i){
cin>>data[i];
}
int len = 0;
for(int i = 0 ; i < n ;++i){
len += (data[i]/=1024);
}
int sum = len/2;
int m[n+1][sum+1];
for(int i = 0 ; i <= n ;i++){
m[i][0] = 0;
}
for(int j = 0 ; j <= sum ;++j){
m[0][j] = 0 ;
}
for(int i = 1 ;i <= n; ++i){
for(int j =1 ; j <= sum ; ++j){
if(data[i-1] > j){
m[i][j] = m[i-1][j];
}
else{
m[i][j] = m[i][j-data[i-1]] + data[i-1] > m[i-1][j] ? m[i][j-data[i-1]] + data[i-1]:m[i-1][j];
}
}
}
cout<<(len-m[n][sum])*1024<<endl;
return 0;
}