/************************************************************************/ /* 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.csdn.net/detail/yincheng01/6641039
解压密码为c.itcast.cn
下载解压后用VS2013打开工程文件
点击 “本地Windows调试器” 执行