前提・実現したいこと
三つの変数を用いて、要素の和が指定した値と同じになる部分集合を書き出すという問題になっているのですが、バックトラッキングを使って導けるのではないかというところまでは分かったのですが、集合の中身の要素の変動を全て把握し、書き出すことが難しくなかなか解けませんでした。
解答がないので、理解するために何かしら考え方のヒントだけでも貰いたいです。
出力例:3の場合、{3},{1,2},{1,1,1}
4の場合、{4},{1,3},{2,2},{1,1,2},{1,1,1,1}
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
java
1public static void main(String []args){ 2 bfDfs_demand(n,i,k); 3 } 4void btDfs_demand(int n, int i, int k) { 5 if () { 6 7 return ; 8 } 9 10 11 } 12int getChoice(int n,int i, int k){ 13 14} 15int write(int n,int i,int k){//この関数で出力 16} 17 18//これが考えた構造です。 19### 試したこと 20 21サイズが大きい順から考えていく。 22例:4の時、 23{1,1,1,1} → 要素の1同士を足して、 {1,1,2} → 要素の1同士、また1と2を足して {1,3},{2,2} → {4} 24問題 集合が重複してしまう。 25 26 1を起点として考える。 27println(",1")というようにあらかじめ1が入るような設定をしておく。 28問題 6の時とかに{2,2,2}が入らない。 29 30### 補足情報(FW/ツールのバージョンなど) 31 32できれば、バックトラッキングを使って解きたいです。
ソースコードの記載がおかしくなっています。プレビューで確認し、ソースコードの記載の末尾に ``` を追加してソースコードの終了部分を明確にしないとマークダウンが正しく機能しません。
また、ソースコードがどう見ても空っぽで、考え方を記載したのみで何も実装されていないように見受けられます。
「試したこと」に記載した内容をまず実装してから質問に記載してください。
「バックトラッキング」という言葉についても、どういう意味で習ったのか自分の言葉で説明してみましょう。調べ直すことでヒントになるかもしれません。
最後に、もし学校の問題なら学校で質問してくださいね。
返答ありがとうございます。
もう一回自分で見直してみます。