2016-03-25 3 views
1

タイトルについては本当に申し訳ありませんが、言葉で私の質問を説明する方法はわかりません。そこでここでは一例です:距離のある2つの要素のすべての組み合わせを取得する

1 2 3 
12 3 
1 23 

または文字列の "1234":

たちは、文字列 "123" を持って、私の関数は農産物であることが予想と仮定

1 2 3 4 
12 3 4 
12 34 
1 23 4 
1 2 34 

私は考えどのようなヘルプやデザインレシピにも感謝します。

+0

付けろ - 長さnの文字列のための出力数はN + 1番目のフィボナッチ数であり、急速にF0 = 0からこれをカウントする完全なります管理不能。これを行う必要がありますか?あなたがこれを行うことで解決しようとしている問題が何であれ、おそらくより効率的なアプローチをとることができます。 – user2357112

+0

[動的プログラミング](https://en.wikipedia.org/wiki/Dynamic_programming)の仕事のように聞こえます。 「130」を翻訳する方法の数と「1306」を翻訳する方法の数を指定した場合、その情報を使って「13065」の翻訳方法をすばやく決定できますか?いったんそれを理解すれば、そのアイデアに基づいてアルゴリズムを構築することができます。 – user2357112

答えて

0

ここでは簡単な再帰的アプローチがあります。各ステップで1〜2文字を文字列から取り除き、このメソッドを再帰的に残りの部分に適用します。

def recurse(left, right, combinations): 
    if len(right) > 1: 
     recurse(left + ' ' + right[:2], right[2:], combinations) 
    if len(right) > 0: 
     recurse(left + ' ' + right[:1], right[1:], combinations) 
    if len(right) == 0: 
     combinations.append(left) 
def get_combinations(base): 
    combinations = [] 
    recurse('', base, combinations) 
    return combinations 
print('\n'.join(print_combinations('abcde'))) 

そしてここに出力される。

ab cd e 
ab c de 
ab c d e 
a bc de 
a bc d e 
a b cd e 
a b c de 
a b c d e 
+0

ありがとう –

関連する問題