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

来源:互联网 发布:淘宝店铺评分能看到吗 编辑:程序博客网 时间:2024/04/27 07:28

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

两个乒乓球队进行比赛,各队人。甲队为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};//声明枚举类型colorcolor pri;//定义color类型的变量priint 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加1cout<<setw(3)<<n;//输出当前的n值,字段宽度为3for (loop=1;loop<=3;loop++)//先后对3个球作处理{switch (loop)//loop的值先后为1,2,3{case 1: pri=color(i);break ;//color(i)是强制类型转换,使pri的值为icase 2: pri=color(j);break ;//使pri的值为jcase 3: pri=color(k);break ;//使pri的值为kdefault :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;}


0 0
原创粉丝点击