求问记忆dfs
查看原帖
求问记忆dfs
297798
FANTA5TlC楼主2021/10/14 09:19

rt,题解也有记忆dfs并且和我的差不多,但是我比他少了记录用的f数组,我认为没必要,但是样例却没过,求问这是为什么

#include <bits/stdc++.h>
using namespace std;
int b[25005];
int n, a[105];
bool flag;
void dfs(int x, int d, int l){
	for (int i = l; i <= n; ++i)
		if (x + a[i] <= a[n] && b[x + a[i]] == 0){
			b[x + a[i]] = d;
			dfs(x + a[i], d + 1, i);
		}
}
int main(){
//  freopen(".in", "r", stdin);
//  freopen(".out", "w", stdout);
	int T;
	cin >> T;
	for (int i = 1; i <= T; ++i){
		cin >> n;
		int ans = n;
		for (int j = 1; j <= n; ++j)
			cin >> a[j];
		sort(a + 1, a + 1 + n);
		dfs(0, 0, 1);
		for (int j = 1; j <= n; ++j)
			if (b[a[j]] > 1) --ans;
		cout << ans << endl;
	} 
	return 0;
}

2021/10/14 09:19
加载中...