hdu 1709 The Balance

母函数

#include <iostream> #include <cmath> using namespace std; int n, data[101]; bool m1[10001], m2[10001]; int main(){ while(cin >> n){ int sum = 0; for(int i = 0; i < n; i++) { cin >> data[i]; sum += data[i]; } memset(m1, false, sizeof(m1)); memset(m2, false, sizeof(m2)); m1[0] = m1[data[0]] = true; for(int i = 1; i < n; i++) { for(int j = 0; j <= sum; j++) { if(m1[j]) { m2[j + data[i]] = true; m2[abs(j - data[i])] = true; } } for(int j = 0; j <= sum; j++) { m1[j] |= m2[j]; m2[j] = false; } } int ans = 0; for(int i = 1; i <= sum; i++) if(!m1[i]) ans++; cout << ans << endl; if(ans == 0) continue; bool flag = true; for(int i = 1; i <= sum; i++) if(!m1[i]) { if(!flag) cout << " "; flag = false; cout << i; } cout << endl; } return 0; } 

你可能感兴趣的:(hdu 1709 The Balance)