欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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)#打印出满足次数 

代码效果

2020华为算法校园招聘(整数拆分问题)

本文地址:https://blog.csdn.net/specialhank/article/details/108256806

相关标签: 算法 华为校招