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) 运行结果

相关文章
|
27天前
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
44 3
|
15天前
|
安全
Python-打印99乘法表的两种方法
本文详细介绍了两种实现99乘法表的方法:使用`while`循环和`for`循环。每种方法都包括了步骤解析、代码演示及优缺点分析。文章旨在帮助编程初学者理解和掌握循环结构的应用,内容通俗易懂,适合编程新手阅读。博主表示欢迎读者反馈,共同进步。
|
22天前
|
JSON 安全 API
Python调用API接口的方法
Python调用API接口的方法
100 5
|
1月前
|
算法 决策智能 Python
Python中解决TSP的方法
旅行商问题(TSP)是寻找最短路径,使旅行商能访问每个城市一次并返回起点的经典优化问题。本文介绍使用Python的`ortools`库解决TSP的方法,通过定义城市间的距离矩阵,调用库函数计算最优路径,并打印结果。此方法适用于小规模问题,对于大规模或特定需求,需深入了解算法原理及定制策略。
39 15
WK
|
1月前
|
Python
Python中format_map()方法
在Python中,`format_map()`方法用于使用字典格式化字符串。它接受一个字典作为参数,用字典中的键值对替换字符串中的占位符。此方法适用于从字典动态获取值的场景,尤其在处理大量替换值时更为清晰和方便。
WK
82 36
|
29天前
|
机器学习/深度学习 人工智能 算法
强化学习在游戏AI中的应用,从基本原理、优势、应用场景到具体实现方法,以及Python在其中的作用
本文探讨了强化学习在游戏AI中的应用,从基本原理、优势、应用场景到具体实现方法,以及Python在其中的作用,通过案例分析展示了其潜力,并讨论了面临的挑战及未来发展趋势。强化学习正为游戏AI带来新的可能性。
88 4
|
1月前
|
开发工具 Python
[oeasy]python043_自己制作的ascii码表_循环语句_条件语句_缩进_indent
本文介绍了如何使用Python制作ASCII码表,回顾了上一次课程中`print`函数的`end`参数,并通过循环和条件语句实现每8个字符换行的功能。通过调整代码中的缩进,实现了正确的输出格式。最后展示了制作完成的ASCII码表,并预告了下一次课程的内容。
27 2
|
1月前
|
Python
在 Python 中实现各种类型的循环判断
在 Python 中实现各种类型的循环判断
34 2
|
1月前
|
Python
Python编程中的魔法方法(Magic Methods)
【10月更文挑战第40天】在Python的世界中,魔法方法就像是隐藏在代码背后的神秘力量。它们通常以双下划线开头和结尾,比如 `__init__` 或 `__str__`。这些方法定义了对象的行为,当特定操作发生时自动调用。本文将揭开这些魔法方法的面纱,通过实际例子展示如何利用它们来增强你的类功能。
17 1
|
1月前
|
Python
Python 中,循环判断
Python 中,循环判断
50 1

热门文章

最新文章