top1编程
← 返回题目
题解

【入门】数组元素之和

1 条题解

  • 0
    @ 2026-7-29 0:16:29
    #include <iostream>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
    
        int a[25];
        for (int i = 0; i < n; i++) {
            cin >> a[i];
        }
    
        int m;
        cin >> m;
    
        // 枚举所有子集:2^n 种情况
        bool found = false;
        for (int mask = 1; mask < (1 << n); mask++) {  // mask=0 表示空集,跳过
            int sum = 0;
            for (int i = 0; i < n; i++) {
                if (mask & (1 << i)) {  // 第i位被选中
                    sum += a[i];
                }
            }
            if (sum == m) {
                found = true;
                break;
            }
        }
    
        if (found) {
            cout << "YES" << endl;
        } else {
            cout << "NO" << endl;
        }
    
        return 0;
    }
    
    • 1