Java实现:两个乒乓球队进行比赛问题

题目:两个乒乓球队进行比赛,各出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);
							}
						}
					}
				}
			}
		}
	}
}
Java实现:两个乒乓球队进行比赛问题_第1张图片


你可能感兴趣的:(Java)