' P '

whatever I will forget

値の重複させずにある数字の和の組み合わせを考える

問題

onlinejudge.u-aizu.ac.jp

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);
                    }
                }
            }
        }
    }
}