18 赛手的名单

题目:

两个乒乓球队进行比赛,各出三人。甲队为 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  }

         

原文地址:https://www.cnblogs.com/liuyangfirst/p/6474474.html