import java.util.Scanner; public class M { public static void main(String args[]){ Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int a[]=new int[n];//子元素 int b[]=new int[n];//二进制位 for(int i=0;i<n;i++){ a[i]=i+1; b[i]=0; } pset(a,b,n); } public static void pset(int a[],int b[],int n){ int i,k; int pw=(int)Math.pow(2,n); for(i=0;i<pw;i++){ System.out.print("{"); for(k=0;k<n;k++){ if(b[k]==1){ System.out.print(a[k]);//利用二进制位输出单个集合 } } System.out.print("}"); change(b,n); } System.out.println(); } public static void change(int b[],int n){ System.out.println(); for (int i = 0; i< n; i++) { if(b[i]==0){ b[i]=1; break; } if(b[i]==1) b[i]=0; } } } 结果
结果对应的二进制位
注意:这里的二进制位是倒着的