哪位大咖帮我看看我为什么RE了,求调
查看原帖
哪位大咖帮我看看我为什么RE了,求调
1413101
RN_GH楼主2024/8/26 15:40
#include<bits/stdc++.h>

using namespace std;
int n, m;
vector<int> a;
vector<vector<int>> sl, ans;
vector<bool> vis;

void DFS(int step) {
    if (step == m) {
        int k = 0;
        vector<int> t(n);
        vector<int> res;
        for (int i = 0; i < m; i++) {
            if (vis[i]) {
                k++;
                res.push_back(i);
                for (int j = 0; j < n; j++) {
                    t[j] += sl[i][j];
                }
            }
        }
        if (ans[k][0]) {
            return;
        }
        for (int i = 0; i < n; i++) {
            if (t[i] < a[i]) {
                return;
            }
        }
        ans[k] = res;
    }
    vis[step] = true;
    DFS(step + 1);
    vis[step] = false;
    DFS(step + 1);
}

int main() {
    cin >> n;
    a.resize(n + 1);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    cin >> m;
    sl.resize(m, vector<int>(n));
    vis.resize(m, false);
    ans.resize(m + 1, vector<int>(m + 1, 0));
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            cin >> sl[i][j];
        }
    }
    DFS(0);
    for (int i = 1; ; i++) {
        if (ans[i][0]) {
            cout << i;
            for (int j = 0; j < i; j++) {
                cout << ' ' << ans[i][j];
                return 0;
            }
        }
    }
}
2024/8/26 15:40
加载中...