!!!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;
}

浙公网安备 33010602011771号