蓝桥杯python枚举法
时间: 2023-12-15 19:33:30 浏览: 110
蓝桥杯基础算法
蓝桥杯中常用的枚举法有两种:排列型枚举和组合型枚举。其中,排列型枚举是指从n个元素中取m个元素进行排列,而组合型枚举是指从n个元素中取m个元素进行组合。下面以一个例子来介绍排列型枚举的实现方法。
假设有n个元素,需要从中选出m个元素进行排列,可以使用递归的方式实现。具体实现方法如下:
```python
import numpy as np
chosen = [] # 存储已选元素
n = 0 # 元素总数
m = 0 # 需要选出的元素个数
def calc(x):
"""
递归函数,从第x个元素开始选取
"""
if len(chosen) > m: # 已选元素个数超过m个,返回
return
if len(chosen) + n - x + 1 < m: # 剩余元素个数不足m个,返回
return
if x == n + 1: # 已经选完n个元素,输出结果
for i in chosen:
print(i, end=' ')
print(' ')
return
chosen.append(x) # 选取第x个元素
calc(x + 1) # 递归选取下一个元素
chosen.pop() # 不选第x个元素
calc(x + 1) # 递归选取下一个元素
if __name__ == '__main__':
tem = input().split()
n = int(tem[0])
m = int(tem[1])
calc(1) # 从第1个元素开始选取
```
以上代码实现了从n个元素中选取m个元素进行排列的功能,其中chosen列表存储已选元素,calc函数为递归函数,从第x个元素开始选取,如果已选元素个数超过m个或剩余元素个数不足m个,则返回;如果已经选完n个元素,则输出结果;否则,选取第x个元素或不选第x个元素,递归选取下一个元素。
阅读全文