Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class Main{
- public static void main(String[] args){
- // ここではNの数を10個({0,1,2,3,4,5,6,7,8,9})と定義
- int N = 10;
- // 部分集合の数(2のN乗)
- double n = Math.pow(2,N);
- // (2のN乗-1)回ループ for (int i = 1; i<(1<<n); i++) {
- for(int i = 1; i < n; i++){
- ArrayList<Integer> alist = new ArrayList<Integer>();
- // N回ループ
- for(int j = 0; j < N; j++){
- // 二進数iをjだけ右にビットシフトしたときの、iの1桁目と1とでビット論理積をとり、演算結果が1の場合に処理を行う
- if((1&i >> j) == 1){
- alist.add(j);
- }
- }
- // 動作確認のため、{0,1,...}形式で表示する
- System.out.print("{");
- for(int j = 0; j < alist.size(); j++) {
- System.out.print(alist.get(j));
- if( (j + 1) != alist.size()) {
- System.out.print(",");
- }
- }
- System.out.println("}");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement