编辑一个实验程序,采用回溯法输出自然数1-n中任意r个数的所有组合。
时间: 2024-11-28 07:27:39 浏览: 10
当你需要编写一个实验程序来找出自然数1到n之间所有可能的不同组合,其中包含r个元素,你可以使用回溯算法(Backtracking)。这个算法通常用于解决组合或排列问题,如从n个数字中选择k个来进行组合。
以下是一个简单的Python代码示例,展示如何实现此功能:
```python
def combination(n, r):
def backtrack(start=0, current=[]): # 回溯函数
if len(current) == r: # 当已选数字达到r个时,记录结果并返回
result.append(current[:]) # 深拷贝当前组合防止修改原数组
return
for i in range(start, n): # 遍历剩余数字
current.append(i + 1) # 添加数字到当前组合
backtrack(i + 1, current) # 继续递归下一个位置
current.pop() # 回溯操作,移除最后一个添加的数字
result = [] # 存放最终组合的结果列表
backtrack()
return result
# 示例调用
n = 5
r = 3
combinations = combination(n, r)
print(f"自然数1-{n}中选取{r}个数的组合有:")
for combo in combinations:
print(combo)
阅读全文