题目
甲乙两队进行乒乓球赛。
甲队:a,b,c 三人; 乙队:x,y,z三人
条件:a不和x比,c不和x,z比
求对战名单
此题没想出来,参考了网上的做法。
贴出来:别人的方法
以下
public class Problem18 {
public static void main(String[] args) {
//i,j,k 分别假设为与a,b,c三人对战的乙队成员
char i,j,k;
for ( i = 'x'; i <='z' ; i++) {
for ( j = 'x'; j <='z' ; j++) {
for ( k = 'x'; k <='z' ; k++) {
//i,j,k三者不能相等,因为一对一比赛
if(i!=j&&i!=k&&j!=k){
//满足题目条件
if(i!='x'&&k!='x'&&k!='z'){
System.out.println("a vs "+i);
System.out.println("b vs "+j);
System.out.println("c vs "+k);
}
}
}
}
}
}
}
大概就是a,b,c固定,分别求i,j,k的排列组合与之配对,然后去掉重复的,和留下满足条件的(只有一个)
a | b | c | |
---|---|---|---|
I=x | j=y | k=z | ❌ :a!=x |
I=x | j=z | k=j | ❌: a!=x |
I=y | j=x | k=z | ❌:c!=z |
I=y | j=z | k=x | ❌:c!=x |
I=z | j=y | k=x | ❌:c!=x |
I=z | j=x | k=y | ⭕️ |
= = emmm 看了别人的方法才知道原来char类型也可以用于for循环, 不过会被直接换成数值
贴出来的别人的方法还用了字符串数组解决