解决思路是统计100的个数为cnt1,200的个数为cnt2
则
cnt1 cnt2
奇数 奇数
奇数 偶数
偶数 奇数
偶数 偶数
当cnt1为奇数时一定剩余一个100,不能均分,所以输出结果为NO
当cnt1为偶数且cnt2为偶数则肯定能均分
当cnt1为偶数且cnt2为奇数时
如果有至少两个100,则取出2个100,转换成200,则cnt2就是偶数,而cnt1也是偶数,可以均分
否则没有两个100,则cnt2是奇数不能均分
#include <iostream> using namespace std; int main(){ int n; cin >> n; int cnt1 = 0, cnt2 = 0,weight; for(int i = 0; i < n ; ++ i){ cin >> weight; if(weight == 100) cnt1++; else cnt2++; } if(cnt1%2) cout<<"NO"<<endl; else{ if(cnt2%2 == 0) cout<<"YES"<<endl; else{ cnt1/=2; if(!cnt1) cout<<"NO"<<endl; else cout<<"YES"<<endl; } } }