!!!DFS-3 P2404 自然数的拆分问题

自然数的拆分问题

题目描述

任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。现在给你一个自然数n,要求你求出n的拆分成一些数字的和。每个拆分后的序列中的数字从小到大排序。然后你需要输出这些序列,其中字典序小的序列需要优先输出。

不能加return 为什么啊啊啊啊啊啊啊

#include <bits/stdc++.h>
using namespace std ;
const int N = 10000;
int n,a[N] = {1};
int cnt,rest;

void dfs(int x)
{
	for(int i = a[x-1] ; i <= rest ; i++ )
	{
		if( i == n) break;
		rest -= i;	a[x] = i;
		if(rest == 0)
		{
			for(int k = 1; k < x; k++) cout << a[k] << '+';
			cout << a[x]<< endl ; 
			//return ;				
		}	
		else 
			dfs(x+ 1);
				
		rest += i;	a[x] = 0;
	}
}

int main()
{   
	cin >> n;	rest = n;
	dfs(1);
    return 0;
}




posted @ 2022-02-17 16:59  HarySeldon  阅读(102)  评论(0)    收藏  举报