2020华为算法校园招聘(整数拆分问题)
程序员文章站
2022-04-02 11:15:15
文章目录题目输入描述:输出描述:示例算法思路代码代码效果题目熊猫妈妈给熊猫宝宝分糖果吃,对粗心的熊猫妈妈来说,她不区分宝宝,例如5颗糖分给3个宝宝,则2、2、1和1、2、2对她来说是同一种分法,也有可能有的宝宝没分到,例如3、2、0。请编写程序,输入的糖果的数量m(0
题目
熊猫妈妈给熊猫宝宝分糖果吃,对粗心的熊猫妈妈来说,她不区分宝宝,例如5颗糖分给3个宝宝,则2、2、1和1、2、2对她来说是同一种分法,也有可能有的宝宝没分到,例如3、2、0。请编写程序,输入的糖果的数量m(0<m<=10)和宝宝的个数n(0<n<=10),输出糖果一共有几种分法。
输入描述:
第一行输入糖果的数量m
第二行输入宝宝个数n
输出描述:
分法的个数
示例
输入
7
3
输出
8
算法思路
题目可以分析为将总数m分为n组,利用递归进行整数拆分,挑选出满足分组不大于n的拆分方法,通过设置全局变量z,对满足条件的分法进行计算。
代码
def candy(m,i,string,n): global z if m==0 and len(string)<=n: z+=1 #print(string) #展示出具体符合条件的示例,方便检查 else: if i>1: candy(m,i-1,string,n) if i<=m: candy(m-i,i,str(i)+''+string,n) m=int(input("")) if m<=0 or m>10: print("input wrong") exit(0) n=int(input("")) if n<=0 or n>10: print("input wrong") exit(0) i=m
z=0 candy(m,i,'',n) print(z)#打印出满足次数
代码效果
本文地址:https://blog.csdn.net/specialhank/article/details/108256806
上一篇: 软文推广:只需3步 快速创作优质内容
下一篇: 计算机操作系统教程——分区存储管理