哎,当时脑子没转过来,没实现那个递归函数,0.4打发了,以下是之后敲出来的,也不知道对不对,帮忙看看😪 import sys def count_comb(X,Y,m): # X个球分为Y堆,每堆至少m个的组合数量     if X==0 or Y==0 or X<Y*m: # 球/堆为0 或 球不够每堆至少m个         return 0     if Y==1: # 只分一堆的话,只有一种组合可能         return 1     sm = 0     # 分为 1 和 Y-1 两部分,第一部分为i个球,第二部分为X-i个球     # 保证第二部分的每一堆的数量必须大于等于第一部分,否则可能重复     for i in range(m,X//Y+1): # 第一部分最少为m个,最多为X//Y个(再多就不能保证存在满足上述条件的解了)         sm += count_comb(X-i, Y-1, i) #对于每一个i,可能的排列数量由第二部分决定     return sm while True: try:     M,N,K = int(raw_input()),int(raw_input()),int(raw_input())     cnt = 0     for num_null in range(0, K-2+1): # 空碗可能0 ~ K-2个,剩下至少鱼碗和肉碗各1个     for num_fish in range(1, K-num_null-1+1): # 鱼碗可能1 ~ K-num_null-1 个,剩下至少1个肉碗         cnt_fish = count_comb(M, num_fish, 1) # M个球分为num_fish堆,每堆至少1个         cnt_meat = count_comb(N, K-num_null-num_fish, 1) # N个球分为K-num_null-num_fish堆,每堆至少1个的组合数量         cnt += cnt_fish*cnt_meat # 在此种碗分配方式下,丸子的组合方式的组合数量     sys.stdout.write(str(cnt%10000)+'\n') except:break
点赞 评论

相关推荐

03-24 16:56
已编辑
肇庆学院 后端
一天代码十万三:你看看人家进大厂的简历就知道了,你这个学历得acm+大厂实习+熟悉底层+运气很好 才有可能进某个大厂,因为大部分是直接卡学历的
投递快手等公司10个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客网
牛客企业服务