数字に達するために1と2を加えることのすべての可能な組み合わせと順列を得ようとしています。たとえば、あなたが1 + 1 + 2
か2 + 2 + 1
を、追加して5に取得することができ目的など
:1と2の要素の合計は、パラメータに等しいで作られたすべてのリストのリストを返す
私のコードはしません0,1のために働く、と2例えば
指摘したように:私はそれを行う方法を考え出した番号に追加する1と2の組み合わせを見つける
3: [1,1,1],[1,2],[2,1]
4: [1,1,1,1],[1,2,1],[2,1,1],[1,1,2],[2,2]
が、それは 'が見つかりませんとそれだけで、7までアップ作品中位の組み合わせ(ほとんどの1または2ではなく、平均的な量)である。
私の関数はどのような順列も見つけられません。
def findsum(x):
numbers = []
numOfOnes= x - 2
numbers.append([1]*x) # all ones
numbers.append([1] * numOfOnes + [2]) #all ones and a two
if x % 2 == 0:
numOfTwos = int((x - 2)/2)
numbers.append([2]*(int(x/2))) # all twos
if x >= 6:
numbers.append([2] * numOfTwos+ [1,1]) #all twos and 2 ones
else:
numOfTwos = int((x - 1)/2)
numbers.append([2] * numOfTwos+ [1])
return numbers
使用法:あなたは--specifically整数compositionsと呼ばれている後にしている何 print(findsum(6))
# if number is greater that 7, won't get middle combination. Ex:
# [1,1,1,2,2] = 7 #doesn't have max 1's or 2's, , so won't be found in my algo
# [1,1,2,2,1,1] = 8 #doesn't have max 1's or 2's, so won't be found in my algo.
は – wim
がそれを手に入れた問題のあなたの現在の方法のコードを含めます。コードがダウンしています。 – Pete
私は順列と組み合わせを教えていますが、私はまだあなたが意味することを理解していません。どうか明らかにしてください。要素の合計がパラメータと等しい1と2のすべてのリストのリストを返すことを意味しますか?そうであれば、 "組み合わせ"はそれを記述するのが悪い方法であり、コードも0,1、または2で動作しません。 –