尽力优化过的搜索方法,但是#5tle,还有优化空间吗
查看原帖
尽力优化过的搜索方法,但是#5tle,还有优化空间吗
1061428
lclclca楼主2024/3/18 17:59

如下,不知道还有没有优化的空间

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;	
int n = 0, k = 0, ans = 0;
vector<int>path;
int DFS(int num,int sum,int last) 
{
	
	if (num == k) {//结束条件
		if (sum == n) {
			//for (int i = 0;i < path.size();i++) {
			//	cout << path[i] << ' ';
			//}
			ans++;
			//cout << endl;
		}
		return 0;
	}
	for (int i = last;i < n;i++) {
		//开始选数
		if (sum + last*(k-num) > n) {
			break;//退
		}
		//不下降
		num++;
		sum += i;
		//path.push_back(i);
		DFS(num, sum, i);
		//path.pop_back();
		num--;
		sum -= i;
		
	}
	return 0;
}
int main()
{
	cin >> n >> k;
	DFS(0, 0, 1);
	cout << ans;
	return 0;
}
2024/3/18 17:59
加载中...