任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。
答案:2 悬赏:20 手机版
解决时间 2021-02-28 08:41
- 提问者网友:听门外雪花风
- 2021-02-27 20:05
任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。
最佳答案
- 五星知识达人网友:廢物販賣機
- 2021-02-27 21:33
# include
# include
# include
//int n;
int total = 0;
int n;
int * p = (int *)malloc(n * sizeof(int));
//int p[1024]={0};
void chf (int a, int m);
int main (void)
{
//int n;
//int * p = (int *)malloc(n * sizeof(int));
printf ("请输入一个数:");
scanf("%d", &n);
chf (n, 1);
printf("共有%d种方式拆分%d\n", total, n);
return 0;
}
void chf (int a, int m)
{
int rest, j, i;
for (i = 1; i <= a; i++)//i <= a;否则rest==0永远不成立;
{
if (i >= p[m -1])
{
p[m] = i;
rest = a - i;
if (rest == 0 && m > 1)
{
total++;
printf("第%d种:", total);
for (j = 1; j < m; j++)
{
printf("%d+", p[j]);
}
printf("%d\n", p[m]);
}
else
{
chf(rest, m +1);
}
p[m] = 0;
}
}
}
# include
# include
//int n;
int total = 0;
int n;
int * p = (int *)malloc(n * sizeof(int));
//int p[1024]={0};
void chf (int a, int m);
int main (void)
{
//int n;
//int * p = (int *)malloc(n * sizeof(int));
printf ("请输入一个数:");
scanf("%d", &n);
chf (n, 1);
printf("共有%d种方式拆分%d\n", total, n);
return 0;
}
void chf (int a, int m)
{
int rest, j, i;
for (i = 1; i <= a; i++)//i <= a;否则rest==0永远不成立;
{
if (i >= p[m -1])
{
p[m] = i;
rest = a - i;
if (rest == 0 && m > 1)
{
total++;
printf("第%d种:", total);
for (j = 1; j < m; j++)
{
printf("%d+", p[j]);
}
printf("%d\n", p[m]);
}
else
{
chf(rest, m +1);
}
p[m] = 0;
}
}
}
全部回答
- 1楼网友:神也偏爱
- 2021-02-27 22:36
这个不需要回答,问题都米哟。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯