
题目
解决代码及点评
/************************************************************************/
/*
23. 两个乒乓球队进行比赛,各出三人,甲队为A、B、C三人,乙队为X、Y 、Z三人,
已知抽签决定比赛名单。有人向队员打听比赛的名单, A说他不和 X比,C说他不和 X、Z比,
请编程序找出三对赛手的名单
*/
/************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void Myswap(char * arr,int num,int num2)
{
char c=arr[num];
arr[num]=arr[num2];
arr[num2]=c;
}
//字符进行全排列,然后将排列出来的结果,根据条件剔除
void swap23(char * arr,const char *brr,int length,int n)
{
if (length==n+1)
{
bool flag=true;
for (int i=0;i<4;i++)
{
if (arr[i]=='A'&&brr[i]=='X')
{
flag=false;
break;
}
else if (arr[i]=='C'&&(brr[i]=='X'||brr[i]=='Z'))
{
flag=false;
break;
}
}
if (flag==true)
{
for (int m=0;m<length;m++)
{
printf("%5c---%5C\n",arr[m],brr[m]);
}
printf("\n\n\n");
}
}
else
{
for (int i=n;i<length;i++)
{
Myswap(arr,i,n);
swap23(arr,brr,length,n+1);
Myswap(arr,i,n);
}
}
}
void main()
{
char arr[4]="ABC";
char brr[4]="XYZ";
swap23(arr,brr,3,0);
system("pause");
}
代码下载及其运行
代码下载链接:
http://download.youkuaiyun.com/detail/yincheng01/6641039
解压密码为c.itcast.cn
下载解压后用VS2013打开工程文件
点击 “本地Windows调试器” 执行
程序运行结果