自然数拆分

原创 2013年12月02日 20:17:38

Problem Description

任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。

Input

输入有多组数据,对于每组数据就一个数n。

Output

对于每组输入输出n的拆分方法。

Sample Input

4

Sample Output

1+1+1+1
1+1+2
1+3
2+2
/*
     解题报告:4 分成的这几种情况,每种情况都是前一个数要小于或等于后面的数。
               这就是进行递归的条件,当找到他们组成的和等于N时,就是所要找的
               一种情况。直接输出就OK了。
*/
//标程:
#include<stdio.h>
#include<string.h>
int n;
int dp[1000010];
void output(int x)
{
	for(int i=1;i<x-1;i++)
		printf("%d+",dp[i]);
	printf("%d\n",dp[x-1]);
}
void dfs(int sum,int num)
{
	int i;
	if(sum==0 && num>2)
	{
		output(num);
		return ;
	}
	for(i=1;i<=sum;i++)
	{
		if(i>=dp[num-1])
		{
			dp[num]=i;
			dfs(sum-i,num+1);
		}
	}
}
int main()
{
    //freopen("a.txt","r",stdin);
	while(scanf("%d",&n)!=EOF)
	{
		memset(dp,0,sizeof(dp));
		dfs(n,1);
	}
	return 0;
}

【例题】【递归/推】NKOJ 3527数的划分&3526 放苹果&3131自然数的拆分

NKOJ3131 自然数的拆分 时间限制 : 10000 MS 空间限制 : 65536 KB 问题描述 任何一个大于1的自然数N,总可以拆分为若干个自然数之和,并且有多种拆分方法。 ...
  • Y__XV
  • Y__XV
  • 2016年11月16日 01:19
  • 297

总结一类问题:铺地板砖,走楼梯,自然数拆分...

(1) 楼梯的走法:一个楼梯有N阶,从cia
  • Alisa11
  • Alisa11
  • 2014年04月20日 14:57
  • 1403

一分钟掌握数据库垂直拆分

  • 2017年03月01日 18:20
  • 82KB
  • 下载

jquery 表格自动拆分(方便打印)插件-printTable

插件代码: [javascript] view plaincopy /**   * jquery 表格打印插件   *   * 作者: Liu...

PDF合并拆分 C#源码

  • 2017年09月09日 12:03
  • 126KB
  • 下载

excel大数据拆分

  • 2016年01月11日 17:47
  • 54KB
  • 下载

string 拆分字符串

以下C++实现一个将字符串拆分以后,存放到一个string当中的代码,使用的时候传入三个参数即可,非常好用: #ifndef FUNCTIONS_H #define FUNCTIONS_H...
  • ljx0305
  • ljx0305
  • 2012年12月04日 14:46
  • 2860

拆分字段统计

  • 2013年10月24日 11:16
  • 649B
  • 下载

文件拆分器

  • 2013年12月04日 21:57
  • 12KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自然数拆分
举报原因:
原因补充:

(最多只允许输入30个字)