テキストpp.144--157を参照。
組合せ関数 combin ( n , r )は、 n C r とも書かれ、 n 個の要素から r 個を選ぶ場合の組合せの数を表します。 組合せ関数は、以下のように再帰的に定義されます。
p.149のList 5-2を参考にして、組合せ関数を計算するプログラムを作成してください。
import java.util.Scanner; class Combin { static int combin(int n, int r) { } public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); } }
PS ...\Desktop\java2> & ... 'Combin' n個の要素からr個を選ぶ場合の組合せの数を求めます。 整数nを入力せよ:6 整数rを入力せよ:4 組合せの数は15です。 PS ...\Desktop\java2>
余力のある人は、p.156のList 5-6を参考にして、組合せ関数の計算をメモ化してください。
メモ用の配列 memo は、Integer[][]型のクラス変数として宣言し、 n と r が入力されてから、new Integer[ n +1][ r +1]で生成してください。
また、メソッド combin ( n , r )では、もし memo [ n ][ r ]がnullでなければその値を返却し、そうでなければ combin ( n , r )を定義どおりに計算し、その結果を memo [ n ][ r ]に格納してから返却してください。
import java.util.Scanner; class CombinMemo { static Integer[][] memo; static int combin(int n, int r) { } public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); } }
PS ...\Desktop\java2> & ... 'CombinMemo' n個の要素からr個を選ぶ場合の組合せの数を求めます。 整数nを入力せよ:6 整数rを入力せよ:4 組合せの数は15です。 PS ...\Desktop\java2>
完成したら、答案(Javaプログラム)をメールで提出してください。 差出人は大学発行のメール・アドレス(学生番号@cis.twcu.ac.jp)とし、宛先はkonishi@cis.twcu.ac.jpとします。 メールの本文には、学生番号、氏名、科目名、授業日(11月21日)を明記してください。