用python编程N个数的R组合问题

    科技2025-01-05  15

    用python编程N个数的R组合问题

    题目要求

    题目:输入 n 和 r,找出从1到N中R个数的组合。同一个组合中不能出现两个一样的数;任何两个组合不能完全一样。且输出顺序为正序。 如n=6 , r=5时: 12345 12346 12356 12456 13456 23456 如n=4,r=2时: 12 13 14 23 24 34

    解题思路

    本题用到了递归的思想,按升序来写。先固定第一个数,递归依次固定第2,3,4…个数。以 n=4, r=2 为例:遍历1到3,先固定第一个数1。接着进入递归,固定第二个数:遍历2到4,固定第二个数为2.。即第一个2组合为12,接着固定第二个数为3,第一个2组合为13。以此类推。代码如下,思路源于(https://blog.csdn.net/qq_40075784/article/details/106749423)

    代码

    def GJ(n, r): if r > n: print("输入错误,请重新输入") return a[0] = r #用于逆向输出组合 b=1 #用于确定开始每次递归开始的数 group(n, r, b) def group(n, r,b): for i in range(b, n-r+2): a[r] = i if r > 1: b=b+1 group(n, r-1,b) else: for j in range(a[0], 0,-1): print(a[j], end="") print() print("请输入n的值:") n=int(input()) print("请输入r的值:") r=int(input()) a = [-1] * n GJ(n, r)
    Processed: 0.010, SQL: 8