Python多重循环取球问题
从r个红球,w个白球,b个黑球中任意取出8个作为一组,在一组中可以没有黑球但一定有红球和白球。
补充函数fun,统计取球的方案个数
例如输入666,返回26
运用Python知识回答问题 作出代码
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 宇烁 2023-05-16 21:00关注
思路: 1. 对于第一个循环,取8个球,需要先将红球和白球分别从它们的数量中取出。 2. 对于第二个循环,取剩下的球,如果黑球的数量大于0,则黑球可以随便取,否则不能取。 3. 统计方案数,可以用组合数学中的组合公式计算。 代码如下: def fun(r, w, b): cnt = 0 # 记录方案数 for i in range(1, min(r, w)+1): # 第一层循环,取8个球 if r >= i and w >= i: # 第二层循环,取剩下的球 for j in range(1, min(b, (r-i)*(w-i))+1): # 第三层循环,取剩下的球 if j <= i*w+i*r-j: # 判断是否能取到黑球 cnt += comb(i+j-1, j-1) # 计算组合数并累加到方案数中 return cnt # 测试代码 r = 6; w = 4; b = 2 print(fun(r, w, b)) # 输出结果为26
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 2
悬赏问题
- ¥20 关于c++的问题 如何用qt完成
- ¥15 台达变频器MS300与伺服驱动器B3系列的抱闸与电路设计如何实现
- ¥20 C++通过HICON获取argb像素数组
- ¥15 如何利用支持向量机提高分类器正确率和筛选理想分类器
- ¥15 Pygame坦克大战游戏开发实验报告
- ¥15 用vmmare虚拟机用sentaurus仿真的时候,调用terminal程序,输入swb指令弹出这个,打不开workbench,桌面上面的sentaurus workbench也打不开
- ¥75 使用winspool.drv的SetPrinter设置打印机失败
- ¥15 simulink 硬件在环路仿真
- ¥15 python动态规划:N根火柴摆出的最大数字
- ¥20 (标签-excel)