public static void main(String[] args) { // TODO Auto-generated method stub int[][] array = new int[64][6]; int tmep = 0; int num = 0; // 生成64个数组集合,每个数组里面放六个元素,分别代表六个罪犯的真假,由于每个罪犯可能为真或者假,所以一共有2的6次方,为64种可能性
for (int i = 0; i < 64; i++) { tmep = i; num = 0; //将每种组合看作是一个数的二进制码:0-63 while (tmep != 0) { array[i][num] = tmep - tmep / 2 * 2; num++; if (tmep > 1) { tmep = tmep / 2; } else { tmep = 0; } } int linshi = 0; for (int o = 0; o < 3; o++) { linshi = array[i][o]; array[i][o] = array[i][5 - o]; array[i][5 - o] = linshi; } } //依次遍历每个数组,根据条件就知道了有没有罪犯了 for (int test = 0; test < 64; test++) { if ((array[test][0] + array[test][1]) >= 1 & (array[test][0] + array[test][4] + array[test][5] >= 2) & (array[test][0] + array[test][3] < 2) & (array[test][1] + array[test][2] == 2 || array[test][1] + array[test][2] == 2) & (array[test][2] + array[test][3] == 1) & (array[test][1] + array[test][2] == 2))
{ //輸出合理的結果 if (array[test][3]==0){ if (array[test][4]==0){ for (int out=0;out<6;out++){ System.out.print(array[test][out]+";"); } } }else { for (int out=0;out<6;out++){ System.out.print(array[test][out]+";"); } }