python穷举法循环经典案例:借书方法

简介: 小明有5本新书,要借给A、B、C三位小朋友,若每个人每次只能借一本书,则有多少种不同的有效借法?

一、问题描述

小明有5本新书,要借给A、B、C三位小朋友,若每个人每次只能借一本书,则有多少种不同的有效借法?

二、问题分析

  • 典型的排列组合问题;
  • 从5个数中提取出3个不同的排列组合的总数。

三、算法设计

  • 每个人所选的书号可以通过穷举法循环来实现;
  • 即从(1,2,3,4,5)的范围内内进行穷举;
  • 循环嵌套实现上述逻辑;
  • 限制条件:书号不能相同。

四、代码实现

1、原始代码

(1) 代码

# 用a、b、c分别表示三人所选的图书的编号
i = 0
print("A、B、C三人所选的书号分别为: ")
# 用来控制A借阅图书的编号
for a in range(1,6):
    # 用来控制B借阅图书的编号
    for b in range(1,6):
        # 用来控制C借阅图书的编号
        for c in range(1,6):
            if a!=b and a!=c and b!=c:
                print("A:%2d B:%2d C:%2d" %(a,b,c), end= '')
                i += 1
                if 1 % 4 == 0:
                    print()
print("共有%d种有效的借阅方法" % i)

(2) 运行结果


2、算法优化

  • 如果前面两个人所选的书号相同,那么无论第三个人所选的书号与前面两人相同与否都是无效的借阅方法。
  • 在执行第三个循环之前可以先判定前两个编号是否相同。

3、优化代码

(1) 代码

i = 0
print("A、B、C三人所选的书号分别为: ")
a = 1
while a <= 5:
    b = 1
    while b <= 5:
        c = 1
        while c <= 5:
            if a!=c and b!=c:  # 控制有效借阅组合
                print("A:%2d B:%2d C:%2d" %(a,b,c), end= '')
                i += 1
                if 1 % 4 == 0:
                    print()
            c += 1
        b += 1
    a += 1
print("共有%d种有效的借阅方法" % i)

(2) 运行结果

相关文章
|
1月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
259 1
|
2月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
323 1
|
3月前
|
机器学习/深度学习 数据采集 数据挖掘
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
125 2
|
3月前
|
调度 Python
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
119 0
|
3月前
|
传感器 大数据 API
Python数字限制在指定范围内:方法与实践
在Python编程中,限制数字范围是常见需求,如游戏属性控制、金融计算和数据过滤等场景。本文介绍了五种主流方法:基础条件判断、数学运算、装饰器模式、类封装及NumPy数组处理,分别适用于不同复杂度和性能要求的场景。每种方法均有示例代码和适用情况说明,帮助开发者根据实际需求选择最优方案。
193 0
|
3月前
|
Python
Python字符串center()方法详解 - 实现字符串居中对齐的完整指南
Python的`center()`方法用于将字符串居中,并通过指定宽度和填充字符美化输出格式,常用于文本对齐、标题及表格设计。
|
2月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
391 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
1月前
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
3月前
|
机器学习/深度学习 数据采集 算法
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
248 4
|
2月前
|
算法 调度 决策智能
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)