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

发布于:2023-01-05 ⋅ 阅读:(270) ⋅ 点赞:(0)

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

💖💖💖💕💕💕欢迎来到本博客💕💕💕💖💖💖
.
🎁支持:如果觉得博主的文章写得还说得过去或者博客对您有帮助的话,可以关注一下博主,如果三连收藏支持就更好啦!这就是给予我最大的支持!

🎉🎉Welcome to my blog!🎉🎉

📃个人CSDN博客主页:热爱科技的刘同学🌈🌈🌈

一、问题描述

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

在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看