如何用DP求解或改正我的代码,我的O(2^n)+优化90分
查看原帖
如何用DP求解或改正我的代码,我的O(2^n)+优化90分
952596
Daniel141130楼主2023/12/6 16:47

我的代码:

#include <bits/stdc++.h>
using namespace std;
int n, m, a[128], ans;
void dfs (int step, int sum) {
    if (step > n) {
        if (sum == m) {
            ans++;
        }
        return ;
    }
    if (sum + a[step] <= m) {
        dfs (step + 1, sum + a[step]);
        dfs (step + 1, sum);
    }
    else dfs (n + 1, sum);
}
int main () {
    int sum = 0;
    cin >> n >> m;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        sum += a[i];
	}
	sort (a + 1, a + n + 1);
    if (sum < m) ans = 0;
    else if (sum == m) ans = 1;
    else dfs (1, 0);
    cout << ans << endl;
    return 0;
}
2023/12/6 16:47
加载中...