一道C++求组合数的问题
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/09 09:58:53
一道C++求组合数的问题
有一个数组a[44]={1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4.11,11,11,11},用递归求出其中和等于17的所有组合.这个程序怎么编呀
有一个数组a[44]={1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4.11,11,11,11},用递归求出其中和等于17的所有组合.这个程序怎么编呀
递归?为什么非要递归?简单的循环就行啊
再问: 这道题要求用递归,因为后面还有扩展,就是当数组包含的数增多后,结果是什么样的?用循环的话,计算量太大了,程序很可能半天都跑不完,特别弱数组个数增多到300,400的时候,循环就不太用得上了
再答: 递归并不能降低时间复杂度,甚至会增加,只是代码比较短
再问: 噢,我用循环编写,数组数一多了之后,程序就是一副永远跑不完的样子。。。那有没有什么简化的方法呀?
再答: 如果只到17不会很多,数组影响最多到17,再多也不会有影响啊
再问: 亲,要不你编个试试看呗?反正我的就是跑不出来啊,跑了很久,第一个循环的位置都还卡在数组首位的1上
再答: 你意思是不是说每个整数出现的次数多了,你这里是每个出现4次,新的会出现5次,6次。。。要是就还是原来的你判断只要大过17肯定就不用考虑了
再问: 这道题要求用递归,因为后面还有扩展,就是当数组包含的数增多后,结果是什么样的?用循环的话,计算量太大了,程序很可能半天都跑不完,特别弱数组个数增多到300,400的时候,循环就不太用得上了
再答: 递归并不能降低时间复杂度,甚至会增加,只是代码比较短
再问: 噢,我用循环编写,数组数一多了之后,程序就是一副永远跑不完的样子。。。那有没有什么简化的方法呀?
再答: 如果只到17不会很多,数组影响最多到17,再多也不会有影响啊
再问: 亲,要不你编个试试看呗?反正我的就是跑不出来啊,跑了很久,第一个循环的位置都还卡在数组首位的1上
再答: 你意思是不是说每个整数出现的次数多了,你这里是每个出现4次,新的会出现5次,6次。。。要是就还是原来的你判断只要大过17肯定就不用考虑了