我写出的代码几乎全RE,我也找不出到底哪里数组越界了
#include<bits/stdc++.h>
using namespace std;
int h,n,c[101],dp[101][101],cnt,maxx;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&c[i]);
cnt+=c[i];
}
for(int i=1;i<=n;i++){
for(int j=cnt/2;j>=1;j--){
for(int k=n/2;k>=1;k--){
if(j>=c[i]&&k>0)dp[j][k]=max(dp[j][k],dp[j-c[i]][k-1]+c[i]);
maxx=max(dp[j][k],maxx);
if(maxx==cnt/2){
cout<<maxx;
exit(0);
}
}
}
}
cout<<maxx;
return 0;
}