码迷,mamicode.com
首页 > 其他好文 > 详细

口袋中球的取出顺序问题,比赛名单问题

时间:2015-04-16 23:48:38      阅读:296      评论:0      收藏:0      [点我收藏+]

标签:

   对于以下这两种问题是离散数学与概论在编程中的应用:     

两个乒乓球队进行比赛,各队人。甲队为A,B,C     乙队为 X,Y,Z    抽签决定比赛名单。有人向队员打听比赛名单,A说他不和X比,C说他不和X,Z比,请编程序找出3组比赛名单
     

#include<stdio.h>

void Game_list()
{
	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\nB--%c\nC--%c\n",i,j,k);
}
int main()
{
	
	Game_list();
	
	return 0;
}

  口袋中有红、黄、蓝、白、黑5种颜色的球若干个。每次从口袋中任意取出3个球,问得到3种不同颜色的球的可能取法,输出每种排列的情况。

 

#include <iostream>
#include <iomanip>//在输出时要用到setw控制符
using namespace std;
int main( )
{ 
	enum color {red,yellow,blue,white,black};//声明枚举类型color
	color pri;//定义color类型的变量pri
	int i,j,k,n=0,loop;//n是累计不同颜色的组合数
	for (i=red;i<=black;i++)//当i为某一颜色时
		for (j=red;j<=black;j++)//当j为某一颜色时
			if (i!=j)//若前两个球的颜色不同
			{ 
				for (k=red;k<=black;k++)//只有前两个球的颜色不同,才需要检查第3个球的颜色
					
					if ((k!=i) && (k!=j))//3个球的颜色都不同
					{
						n=n+1;//使累计值n加1
						cout<<setw(3)<<n;//输出当前的n值,字段宽度为3
						for (loop=1;loop<=3;loop++)//先后对3个球作处理
						{
							switch (loop)//loop的值先后为1,2,3
							{
							case 1: pri=color(i);break ;//color(i)是强制类型转换,使pri的值为i
							case 2: pri=color(j);break ;//使pri的值为j
							case 3: pri=color(k);break ;//使pri的值为k
							default :break ;
							}
							switch (pri)//判断pri的值,输出相应的“颜色”
							{
							case red: cout<<setw(8)<<"red"; break;
							case yellow: cout<<setw(8)<<"yellow";break;
							case blue:cout<<setw(8)<<"blue"; break ;
							case white:cout<<setw(8)<<"white"; break ;
							case black:cout<<setw(8)<<"black"; break ;
							default : break ;
							}
						}
						cout<<endl;
					}
			}
			cout<<"total:"<<n<<endl;//输出符合条件的组合的个数
			return 0;
}


口袋中球的取出顺序问题,比赛名单问题

标签:

原文地址:http://blog.csdn.net/kai8wei/article/details/45081785

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!