正整数拆分算法
Jupin 2006-03-01 01:35:53 题目:N = n1+n2+...+nk (k > 1, n1,..,nk > 0)
其中,N是待拆分的正整数。
例子:2 = 1+1
3 = 1+2 = 1+1+1 = 2+1
最简单的是用递归实现,我是这么写的:
int aaa(int n, char *s)
{
char o[1280];
int i;
if (1 == n)
{
return 0;
}
for (i = 1; i < n; i++)
{
printf("%s+%d+%d\n", s, i, n-i);
sprintf(o, "%s+%d", s, i);
kkk(n-i, o);
}
return 0;
}
但是显然,当N取较大值时,这个程序会崩溃掉。
几经思考,我写一个非递归版本。但很想看看大家的奇思妙想,
所以先不贴我的,以免误导大家。
不一定要具体编码,说说想法也行。万分感谢。