C 练习实例22
题目:两个乒乓球队进行比赛,各出三人,甲队为 a、b、c 三人,乙队为 x、y、z 三人。
抽签决定比赛名单,有人向队员打听比赛的名单:a 说他不和 x 比,c 说他不和 x、z 比,请编写代码找出三队赛手的名单。
思路:
- 使用 3 个循环 分别枚举甲队的每个队员与乙队的队员匹配的可能性。
- 添加 约束条件,过滤掉不满足题目要求的组合:
- a 不和 x 比赛。
- c 不和 x 和 z 比赛。
- 确保每个乙队的队员只能和一个甲队的队员比赛。
实例
// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鸟教程. All rights reserved.
//
#include <stdio.h>
int main() {
// 定义甲队和乙队的成员
char teamA[] = {'a', 'b', 'c'}; // 甲队:a, b, c
char teamB[] = {'x', 'y', 'z'}; // 乙队:x, y, z
// 变量 i, j, k 分别表示 a, b, c 的对手
char i, j, k;
// 枚举 a 的对手
for (i = 'x'; i <= 'z'; i++) {
// 枚举 b 的对手
for (j = 'x'; j <= 'z'; j++) {
// 确保 a 和 b 的对手不同
if (i != j) {
// 枚举 c 的对手
for (k = 'x'; k <= 'z'; k++) {
// 确保 c 的对手与 a 和 b 的对手不同
if (i != k && j != k) {
// 满足题目条件:a 不和 x 比,c 不和 x 和 z 比
if (i != 'x' && k != 'x' && k != 'z') {
// 输出匹配结果
printf("比赛顺序:a--%c\tb--%c\tc--%c\n", i, j, k);
}
}
}
}
}
}
return 0;
}
以上实例输出结果为:
顺序为:a--z b--x c--y