問題
1 から n までの数の中から、重複無しで3つの数を選びそれらの合計が x となる組み合わせの数を求めるプログラムを作成して下さい。
例えば、1 から 5 までの数から3つを選んでそれらの合計が 9 となる組み合わせは、
1 + 3 + 5 = 9 2 + 3 + 4 = 9 の2通りがあります。
解法
重複したらだめなので、ただ単にnまで全探索したらダメです。
iは全部、jはi+1から、kはj+1からループの開始indexを指定することで3つのループカウンタの数字の重複が起こり得ません
コード
nが9だとした場合です
public class Main170 { public static void main(String[] args) { for(int i=1; i<=9; i++) { for(int j=1+i; j<=9; j++) { for(int k=1+j; k<=9; k++) { if(i + k + j == 9) { System.out.println(i + " " + j + " " + k); } } } } } }