Python 两个不同的正整数之和

Python 两个不同的正整数之和,python,arrays,list,sum,greedy,Python,Arrays,List,Sum,Greedy,任务。这个问题的目标是使用贪心算法来表示给定的正整数,贪心算法选择最小的可用数字是您选择的一个好方法 n = 17 # The input x = 0 # The running total for k in range(1, n): # The maximum number is bounded above by n x += k if n - x < k + 1: # The next number is too big print(k) # Print

任务。这个问题的目标是使用贪心算法来表示给定的正整数,贪心算法选择最小的可用数字是您选择的一个好方法

n = 17 # The input
x = 0 # The running total
for k in range(1, n): # The maximum number is bounded above by n
    x += k
    if n - x < k + 1: # The next number is too big
        print(k) # Print k
        print(*list(range(1, k)), end=" ") # Print the list of numbers (Except the last)
        print(n - x + k) # Print the last number
        break
n=17#输入
x=0#运行总数
对于范围(1,n)中的k:#最大数以n为界
x+=k
如果n-x

但是,如果您只希望数字
k
作为输出,而不是数字本身,那么您应该简单地计算三角形数字并将其与输入进行比较。

为此使用itertools

import itertools as it
n=10

for i in range(n-1,0,-1):
    for tup in it.combinations(range(1,n),i):
        if sum(tup) == n:
            print(tup)
            break 
    else:
        continue        
    break
输出:

(1, 2, 3, 4)