不使用itertools实现1~m所有有序n元组按序输出的编程问题
有序n元组生成实现方案
需求说明
给定两个正整数n(元组长度)和m(元素取值范围为1~m),无需借助任何外部模块,按指定升序输出所有符合要求的有序整数n元组。
实现思路
采用回溯递归的方式逐位生成元组,每一位按从小到大的顺序遍历1到m的可选值,保证生成的元组整体符合要求的升序排列:
- 维护一个临时列表存储当前正在构建的元组前缀
- 当临时列表长度等于n时,直接按格式输出该元组
- 每一位选值后递归填充下一位,递归返回后回退当前选值,尝试下一个可选值
完整代码
def sequence(): n = int(input()) m = int(input()) def backtrack(current_tuple): # 当前元组长度等于n时输出 if len(current_tuple) == n: print(*current_tuple, sep=',') return # 按从小到大的顺序遍历当前位的可选值,保证输出顺序正确 for num in range(1, m + 1): current_tuple.append(num) backtrack(current_tuple) # 回溯:移除刚添加的元素,尝试下一个值 current_tuple.pop() backtrack([]) sequence()
效果验证
输入示例1的3、2,输出和题目给出的示例1完全一致;输入示例2的2、3,输出和题目给出的示例2完全匹配,同时兼容原代码已经实现的n=1、m=1的边界场景。
内容的提问来源于stack exchange,提问作者Pancake
相关产品推荐
相关产品推荐

