数的拆分将正整数n拆分成k份(使k个非零数之和的等于n),且每种拆分方案不能为空,任意两种拆分方案不能相同(不考虑顺序)

数的拆分
将正整数n拆分成k份(使k个非零数之和的等于n),且每种拆分方案不能为空,任意两种拆分方案不能相同(不考虑顺序)。例如:n=7,k=3,共4种拆分方法为:①1、1、5; ②1、2、4; ③1、3、3; ④2、2、3。下面三种分法被认为是相同的:1、1、5; 1、5、1; 5、1、1;编程任务:
给定的正整数n,分成k分,编程计算有多少种不同的分法,并将每组数存入数组。
也可以不用存到数组入输出,只求出不同的分法.
馨杰 1年前 已收到2个回答 举报

太阳恋人sunlover 幼苗

共回答了15个问题采纳率:80% 举报

若输出拆法,深度优先搜索,为(n,k)时则记录。
int n,k,num[100];
void number(int now,int nowk)
{ int i;
if(nowk==k&&now==0)
保存num数组;
for(i=now+1;i

1年前

5

nigeldong 幼苗

共回答了16个问题采纳率:87.5% 举报

不输出拆法的话是用二重循环做。具体如何我记不清了(以前推导出来过,方法也有很多)
输出拆法就用搜索呗

1年前

2
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.664 s. - webmaster@yulucn.com