解決思路是統計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; } } }