return0;
}
2.15解:
这是一个组合问题,使用穷举法。
共有5个位置,设甲队5名队员位置不变,乙队改变队员位置,进行配对。
注意第1个位置可在5个队员中任选一个,以后的位置必须扣除已选过的队员。
并扣除不能配对的情况,即得所有可能的比赛名单。
#include
usingnamespacestd;
intmain(){
charst1[5]={'A','B','C','D','E'},st2[5]={'J','K','L','M','N'};
inti=0,j,k,l,m,n;
for(j=0;j<5;j++){//0号位
if(j==0)continue;//A选手不与选手J比赛,即st1[0]不与st2[0]比赛
for(k=0;k<5;k++){//1号位
if(k==j)continue;//剔除乙队占据0号位的选手
for(l=0;l<5;l++){//2号位
if(l==j||l==k)continue;//剔除乙队占据0、1号位的选手
for(m=0;m<5;m++){//3号位
if(m==j||m==k||m==l)continue;//剔除乙队占据0、1、2号位的选手
if(m==3)continue;//st1[3]不与st2[3]比赛,即D不与M比赛
for(n=0;n<5;n++){//4号位
if(n==j||n==k||n==l||n==m)continue;
//剔除乙队占据0、1、2、3号位的选手
if(n==3)continue;//st1[4]不与st2[3]比赛,即E不与M比赛
cout<cout<cout<i++;
}
}
}
}
}
cout<
return0;
}
2.16解:
用5个元素的整型数组,分别放弃权票和各候选人的得票,然后用开关语句打印。
#include
#include
usingnamespacestd;
intmain(){
enumcandidate{feipiao,zhang,wang,li,zhao}cand;
intvote[5]={0},i,k=0,n;
cin>>n;
while(n!
=-1){
k++;
if(n>=1&&n<=4)vote[n]++;
elsevote[0]++;
cin>>n;
}
for(i=0;i<5;i++){
cand=(candidate)i;
switch(cand){
casefeipiao:
cout<casezhang:
cout<if(vote[cand]>k/2)cout<<"当选"<elsecout<break;
casewang:
cout<if(vote[cand]>k/2)cout<<"当选"<elsecout<break;
caseli:
cout<if(vote[cand]>k/2)cout<<"当选"<elsecout<break;
casezhao:
cout<<