- ベストアンサー
c言語のプログラム
「1」が3枚、「3」が3枚、「5」が3枚、「7」が4枚、「9」が5枚で合計18枚のカードがある。このカードを並べて6桁の数を3個作り、その3個の数の総和が「1234567」となるカードの組み合わせをすべて求めたいのですがどうすればよいか全然分かりません。 6桁の数を配列で表現し、和を求めるときに1の位から上位の桁へ順番に和が一致しているかチェックするのを、再帰呼び出しででしたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
考え方だけ。 (1) 18枚のカードの中から一の位のカード3枚の組み合わせをすべて調べ、3枚の合計の末尾が7なら(2)の処理を実行する。 (2) 残り15枚のカードの中から十の位のカード3枚の組み合わせをすべて調べ、3枚の合計と一の位の繰り上がりとの計の末尾が6なら(3)の処理を実行する。 (3) 残り12枚のカードの中から百の位のカード3枚の組み合わせをすべて調べ、3枚の合計と十の位の繰り上がりとの計の末尾が5なら(4)の処理を実行する。 (4) 残り9枚の・・・・・・・・・・・・・・・・・ (5) 残り6枚の・・・・・・・・・・・・・・・・・ (6) 残り3枚のカードの組み合わせをすべて調べ、3枚の合計と万の位の繰り上がりとの計が12なら結果を出力する。 (1)~(6)は同じような処理なので、これを1つの関数にまとめて自分自身を呼び出すようにします。