#include<bits/stdc++.h> using namespace std; int main(){ int n,a,sum=0,s=0,count=0; cin>>n; for(int i=1;i<=n;i++){ cin>>a; if(a%2==0) sum=sum+a; else{ s=s+a; count++; } } if(count%2==0) sum=sum+s; printf("%d",sum); return 0; } 样例通过78%然后一直找不到原因 想的是如果奇数的个数为偶数的话就加上奇数的和,为奇数就不加。 但是其实为奇数的话加上要奇数和减一个奇数(最小的,才能保证和为最大) #include<bits/stdc++.h> using namespace std; int main(){ int n,a,sum=0,s=0,count=0,mion=100001; cin>>n; for(int i=1;i<=n;i++){ cin>>a; if(a%2==0) sum=sum+a; else{ mion=min(mion,a); s=s+a; count++; } } if(count%2==0) sum=sum+s; else sum=sum+s-mion; printf("%d",sum); return 0; }