题目:
两个乒乓球队进行比赛,各出三人。甲队为 a,b,c 三人,乙队为 x,y,z 三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和 x比, c说他不和 x,z比,请编程序找出三队赛手的名单。
思路分析:
(1)本题目是一道逻辑题目 首先按照要求,建立甲对和乙对,分别存放abc和xyz
(2)根据条件得到:
(a) char [i]=='a'&&char[j]=='x'
(b) char[i] == 'c' && char[j] == 'x' || (char[i] == 'c' &&char[j] == 'z')
(3)缺陷条件:
当按照条件得出判断语句后,发现
c必须跟y一起比赛
a不跟x比赛,c跟y比赛了,所以a也不能跟y比赛
b不跟y和x比赛
得出其他隐藏语句
char[i] == 'a' && char[j] == 'y'
char[i] == 'b' && char[j] == 'y'|| (char[i] == 'b' && char[j] == 'z')
由此得出代码如下:
1 public class _018PlayerList { 2 3 public static void main(String[] args) { 4 playerList(); 5 } 6 7 // 排列组合问题:a、b、c和x、y、z每个互相组队,就是两次遍历 8 private static void playerList() { 9 char[] count1 = { 'a', 'b', 'c' }; 10 char[] count2 = { 'x', 'y', 'z' }; 11 12 for (int i = 0; i < count1.length; i++) { 13 for (int j = 0; j < count2.length; j++) { 14 // 放在字符数组i中的a和字符数组j中的x不能比 15 if (count1[i] == 'a' && count2[j] == 'x') { 16 continue; 17 } else if (count1[i] == 'a' && count2[j] == 'y') { 18 continue; 19 } else if (count1[i] == 'b' && count2[j] == 'y'|| (count1[i] == 'b' && count2[j] == 'z')) { 20 continue; 21 } else if (count1[i] == 'c' && count2[j] == 'x'|| (count1[i] == 'c'&& count2[j] == 'z')) { 22 continue; 23 } else { 24 System.out.println(count1[i] + " VS " + count2[j]); 25 } 26 } 27 } 28 } 29 }