给出两个组合,明确给出了组合中不可能的对应方式,要求最终的对应方式。(谭浩强 C 语言 第三版 130 页第 6.15 题)
两个乒乓球队进行比赛,各出 3 人。甲队为 A、B、C 3 人,乙队为 X 、Y、Z 3 人。已抽签绝对比赛名单。有人向队员打听比赛的名单,A 说他不和 X 比,C 说他不和 X、Z 比,请编程序找出 3 队赛手的名单。
我们可以定义三个 变量,分别表示 A、B、C 的对手。我们将每个人的关系都遍历一下。然后根据题干进行排除。
#include <stdio.h>
void main()
{
printf("嗨客网(www.haicoder.net)\n\n");
char i,j,k; //假设 i 是 A 的对手,j 是 B 的对手,k 是 C 的对手
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')
{
printf("A--%c\t B--%c\t c--%c\n",i,j,k);
}
}
}
}
}
}
}
运行后,控制台输出如下:
因为题目中说 A 不和 X 比,C 不和 X、Z比较,所以 i 不可能等于 X, k 也不可能等于 X 和 Z。