TLE求优化
查看原帖
TLE求优化
816204
Light_LE楼主2024/12/13 23:26

应该是迭代加深搜索的问题

#include <bits/stdc++.h>
#define fin cin
#define fout cout

#define maxn 114514
using namespace std;
int a[maxn], n;
bool iddfs(int dep, int maxdep) {
	if (a[dep] > n) {
		return 0;
	}
	if (dep == maxdep) {
		return a[dep] == n;
	}
	
	for (int i = 1; i <= dep; i++) {
		a[dep + 1] = a[dep] + a[i];
		if (iddfs(dep + 1, maxdep)) {
			return 1;
		}
	}
	
	return 0;
}
int main() {
	//ifstream fin("light.in");
	//ofstream fout("light.out");
	ios::sync_with_stdio(0); fin.tie(0); fout.tie(0);

	while (fin >> n && n) {
		a[1] = 1;
		int dep = 1;
		
		while (iddfs(1, dep) == 0) {
			dep++;
		}
		
		for (int i = 1; i <= dep; i++) {
			fout << a[i] << " ";
		}
		fout << endl;
	}
	return 0;
}
2024/12/13 23:26
加载中...