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

相关文章
|
12天前
|
Python
Python while 循环
Python while 循环
20 0
|
2天前
|
存储 索引 Python
Python列表的循环遍历详解
Python列表的循环遍历详解
5 1
|
2天前
|
机器学习/深度学习 数据可视化 数据挖掘
Python编程的深入探索与实用案例
Python编程的深入探索与实用案例
11 3
|
2天前
|
大数据 Python
Python中for循环的嵌套应用
Python中for循环的嵌套应用
13 1
|
2天前
|
大数据 Python
Python中while循环的嵌套应用详解
Python中while循环的嵌套应用详解
10 0
|
2天前
|
Python 容器
GitHub狂揽6700 Star,Python进阶必备的案例、技巧与工程实践
当下是 Python 急剧发展的时代,越来越多的人开始学习和使用Pyhon,而大家也遇到了各种问题。这份手册清晰、细致地介绍了 Python 代码应该遵循的编程风格,并解释了背后的原理和机制。 入门 Python 语言相对简单,但写出优雅的代码并非易事。这份手册深入讲解了 Python进阶知识的方方面面,并配以许多有趣的案例故事,使读者能更轻松地理解各种原理,并更好地将其运用于日常工作。
|
2天前
|
存储 数据处理 数据格式
Python提取文本文件(.txt)数据的方法
该文介绍了如何使用Python遍历含有多個`.txt`文本文件的文件夹,找出文件名包含`Point`的文件,并从中提取特定波长数据。目标是收集所有相关文件中指定波长对应的后5列数据,同时保留文件名。代码示例展示了如何使用`os`和`pandas`库实现这一功能,最终将所有数据整合到一个DataFrame对象中。
|
3天前
|
Python
Python中的while循环
Python中的while循环
|
3天前
|
存储 Python
Python中的for循环
Python中的for循环
|
3天前
|
机器学习/深度学习 算法 数据挖掘
4小时学完!15年技术大牛用247个实战案例剖析的Python教程
今天给小伙伴们分享一份15年技术大牛用247个实战案例剖析的Python教程,这份教程全程彩图讲解,告别枯燥!60秒学会⼀个⼩例⼦,带你系统学习Python,从⼊门到⼤师。 涵盖了Python基础、Python字符串和正则、Python⽂件和⽇期、Python三⼤利器、Python绘图、Python之坑、Python第三⽅包、机器学习和深度学必知算法、Python实战、Pandas数据分析案例实战十大篇幅的精品案例教程