You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:36:04