1. 程式人生 > >小白菜oj 1038 [視訊]遞迴8(分解數)

小白菜oj 1038 [視訊]遞迴8(分解數)

題目:分解數

思路:
直接搜尋,順序要注意。

程式碼:

#include<bits/stdc++.h>
using namespace std;

int n;
vector<int> ans;

void dfs(int y,int s) {
	if(s==0) {
		if(ans.size()==1) return ;
		printf("%d",ans[0]);
		for(int i=1;i<ans.size();i++) {
			printf("+%d",ans[i]);
		}
		printf("\n");
		return ;
	}
	if(s<
y) return ; ans.push_back(s); dfs(s,0); ans.pop_back(); for(int i=y;i<s;i++) { ans.push_back(i); dfs(i,s-i); ans.pop_back(); } } int main() { scanf("%d",&n); dfs(1,n); return 0; }