現在会津オンラインジャッジの全探索の問題に取り組んでいます。
会津オンラインジャッジ
与えられた数列の値のいくつかを足し合わせて次の数列の値を作れるか判定する問題です。
現在やりたいこととして、数の取り得る組み合わせ全て(2^n通り)を考えて一致するかどうかを判定しようと考えています。
まず全ての組み合わせを表現するにあたって再帰関数で2^n通りを表現しようと考えました。
python3
1def makeCombination(n, l): 2 if n == 0: 3 print(l) 4 5 l[n-1] = 0 6 makeCombination(A, n-1, l, ans) 7 l[n-1] = 1 8 makeCombination(A, n-1, l, ans)
ここでlはnこの数値を採用するかしないかを表した配列です。([0,0,1,0,0...])
この方法だとprintで全ての組み合わせを確認することはできるのですが、この結果をどのように取り出して次の処理につなげればいいのかがわからない状態です。
頭の中では
- 2^n通りの組み合わせを求める
- それぞれの和を求める
- 与えられた数列に該当するか判定する
- 出力
と言う手順を踏もうと思っています。
1から2へのデータの繋げ方が混乱しています。どのような処理を記述すればよいのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。