题目:两个乒乓球队进行比赛,各出3人。甲队为A,B,C 3人,乙队为X,Y,Z 3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X,Z比,请编程序找出3队赛手的名单。
解析:如果是人经过逻辑推理可以很快的得到结论。但是计算机处理此问题,不可能立即得出结论,而必须对每一种组合一一验证,找出符合条件的组合。
代码一:
public class Test {
private String A,B,C;//甲队成员(固定,只需找对应的乙队成员作为对手)
public static void main(String[] args) {
String[] str = {"X","Y","Z"};//3个乙队成员
//乙队成员排序
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 3; k++) {
Test t = new Test(str[i], str[j], str[k]);
//对手各不相同,并且A不和X比,C不和X,Z比
if(!t.A.equals(t.B) && !t.A.equals(t.C)&&!t.B.equals(t.C)
&& !t.A.equals("X") && !t.C.equals("X")&& !t.C.equals("Z")){
System.out.println("A-->" + t.A);
System.out.println("B-->" + t.B);
System.out.println("C-->" + t.C);
}
}
}
}
}
public Test(String A, String B, String C) {
super();
this.A = A;
this.B = B;
this.C = C;
}
}
代码二:
假设 :A与i比赛,B与j比赛,C与k比赛,i,j,k分别是X,Y,Z 之一,并且i,j,k互不相等
public class Test2 {
public static void main(String[] args) {
char i,j,k;
for (i = 'X'; i <='Z'; i++) {
for (j = 'X'; j <='Z'; j++) {
if(i!=j){
for (k = 'X'; k <='Z'; k++) {
if(i!=k&&j!=k){
if(i!='X'&&k!='X'&&k!='Z'){
System.out.println("A--"+i);
System.out.println("B--"+j);
System.out.println("C--"+k);
}
}
}
}
}
}
}
}