#include <iostream> #include<vector> using namespace std; int main() { int n; int sum=0; cin>>n; vector<int> a(n+1); for(int i=1;i<=n;i++)cin>>a[i],sum+=a[i]; if(sum%2) { cout<<"false"; return 0; } vector<vector<bool>> dp(n+1,vector<bool>(sum/2+1)); dp[0][0]=true; for(int i=1;i<=n;i++) { for(int j=1;j<=sum/2;j++) { dp[i][j]=dp[i-1][j]; if(j-a[i]>=0&&dp[i-1][j-a[i]])dp[i][j]=true; } } if(dp[n][sum/2])cout<<"true"; else cout<<"false"; } //优化 #include <iostream> #include<vector> using namespace std; int main() { int n; int sum=0; cin>>n; vector<int> a(n+1); for(int i=1;i<=n;i++)cin>>a[i],sum+=a[i]; if(sum%2) { cout<<"false"; return 0; } vector<bool> dp(sum/2+1); dp[0]=true; for(int i=1;i<=n;i++) { for(int j=sum/2;j>=a[i];j--) { if(dp[j-a[i]])dp[j]=true; } } if(dp[sum/2])cout<<"true"; else cout<<"false"; } // 64 位输出请用 printf("%lld") // 64 位输出请用 printf("%lld")