提交时间:2024-07-03 13:33:28

运行 ID: 153483

#include<bits/stdc++.h> using namespace std; int v[110],N,sum=0; bool dp[110][10000]; int main(){ cin>>N; for(int i=1;i<=N;i++){ cin>>v[i]; sum+=v[i]; } int V=sum>>1,M=N>>1; dp[0][0]=true; for(int i=1;i<=N;i++)for(int j=M;j>=1;j--)for(int k=V;k>=v[i];k--)dp[j][k]=(dp[j][k]||dp[j-1][k-v[i]]); for(int i=V;i>=0;i--) if(dp[M][i]){ cout<<i;//找出人数为N/2下能达到的最大不超过一半的分数 break; } return 0; }