C语言解决乒乓球比赛人员匹配问题

两个乒乓球对进行比赛,各出3人,甲队为A,B,C,乙队为X,Y,Z。已抽签决定比赛名单,已知A不和X比,C不和X,Z比,编程找出匹配名单

法1:

int match()
{
		char a, b, c;//定义甲队队员变量
		for (c = 'x'; c <= 'z'; c++) //甲队C可以和x,y,z比赛
		{
			//从c开始判断
			if (c != 'x' && c != 'z')//且满足c不等于x和z
			{
				for (a = 'x'; a <= 'z'; a++) //甲队a可以和x,y,z比赛
				{
					if (a != c && a != 'x')//且满足a不等于z,并且不与c匹配同一个人
					{
						//a和c的对手不重复
						for (b = 'x'; b <= 'z'; b++) 甲队b可以和x,y,z比赛
						{
							//b和a,c的对手均不重复
							if (b != a && b != c) 
							{
								printf("a-%c b-%c c-%c\n", a, b, c);
							}
						}
					}
				}
			}
		}
		return 0;
	}

int main()
{
	int tmp = match();//临时变量接受
	printf("%d", tmp);//打印
	return 0;
}

法2:

//3*3*3 27种可能性  根据已知条件  排除所以不可能的情况   剩余的就是我们要的
void Match()
{
	for(char A='X'; A<='Z'; A++)
	{
		for(char B='X'; B<='Z'; B++)
		{
			for(char C='X'; C<='Z'; C++)
			{
				if(A!='X' && C!='X' && C!='Z' && A!=B && A!=C && B!=C)
				{
					printf("A->%c\n", A);
					printf("B->%c\n", B);
					printf("C->%c\n", C);
				}
			}
		}
	}
}
int main()
{
     match();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值