字典序 集合 public class PossibleSet { public static void main(String[] args) { int[] set = new int[5]; char[] chs = {'a','b','c','d','e'}; int position = 0; set[position] = 1; while(true) { System.out.print("{"+chs[set[0]-1]); for(int i=1;i<=position;i++) System.out.print(","+chs[set[i]-1]); System.out.println("}"); if(set[position]<chs.length) { set[position+1] = set[position]+1; position++; } else if(position!=0) { position--; set[position]++; } else break; } } } 二进制 子集 import java.text.DecimalFormat; public class Subset { public static void main(String[] args) { char[] chs = {'a','b','c','d','e'}; int len = 5; for(int i =0;i<Math.pow(2, len);i++) { String str = Integer.toBinaryString(i); int toNum = Integer.valueOf(str); DecimalFormat df = new DecimalFormat("00000"); str = df.format(toNum); System.out.print("{"); for(int j=0;j<len;j++) { if(str.charAt(j)=='1') System.out.print(chs[j]+","); } System.out.println("}"); } } } 吸血鬼数 import java.util.Arrays; public class Vampire { public static void main(String[] arg) { } public static void findVampire() { String[] arr1,arr2; for(int i=10;i<=99;i++) for(int j=i+1;j<=99;j++) { int sum = i*j; if(sum<1000||sum>9999) continue; arr1 = String.valueOf(sum).split(""); arr2 = (String.valueOf(i)+String.valueOf(j)).split(""); Arrays.sort(arr1); Arrays.sort(arr2); if(Arrays.equals(arr1,arr2)) { System.out.println(i+"*"+j+"="+i*j); } } } }