P2404 自然数的拆分问题

题目描述

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

输入格式

输入:待拆分的自然数 nn。

输出格式

输出:若干数的加法式子。

输入输出样例

输入 #1复制

7

输出 #1复制

1+1+1+1+1+1+1
1+1+1+1+1+2
1+1+1+1+3
1+1+1+2+2
1+1+1+4
1+1+2+3
1+1+5
1+2+2+2
1+2+4
1+3+3
1+6
2+2+3
2+5
3+4

说明/提示

数据保证,1\le n\le 81≤n≤8。

 

#include 
#include 
#include 
#include 
using namespace std;
int n;
int s[10001]={1};
void dfs(int u,int t){
   if(u==0){
       for(int i=1;i<=t-2;i++){
           printf("%d+",s[i]);
       }
       printf("%d\n",s[t-1]);
       return;
   }
   for(int i=s[t-1];i<=u;i++){
       if(i

 

你可能感兴趣的:(深度优先,算法,图论)