c++编程,一个小组共五人,分别为A,B,C,D,E.现有一项任务,要他们中的3个人去完成。
答案:2 悬赏:50
解决时间 2021-01-11 20:02
- 提问者网友:泪痣哥哥
- 2021-01-11 01:13
c++编程,一个小组共五人,分别为A,B,C,D,E.现有一项任务,要他们中的3个人去完成。
最佳答案
- 二级知识专家网友:轻雾山林
- 2021-01-11 02:47
大致简单编程了一下,用1、2、3、4、5分别表示ABCDE;用i、j、k分别表示三重变量进行循环,程序如下(有注释,某些情况自动忽略了:比如A不能出现在第二重第三重循环中......):
#include
int main(){
printf("此项任务可以由如下三人组合:
");
for(int i=1;i<=5;i++){
for(int j=i+1;j<=5;j++){
for(int k=j+1;k<=5;k++){ //用i-j-k三个变量枚举三个人的组合情况
if((i==1&&j==3)||(i==1&&k==3))//AC不能都去
continue;
if(i==2&&j==3&&k==4)//BCD不能都去
continue;
int cnt=0;//BC至少需要去一个
if(i==2||j==2)cnt++;
if(i==3||j==3||k==3)cnt++;
if(cnt==0)
continue;
cnt=0;
if(i==3){//如果i=C,C去了,D、E就只能去一个;
if(j==4||k==4)cnt++;
if(j==5||k==5)cnt++;
}
if(cnt!=1)continue;
cnt=0;
if(j==3){//如果j=C,C去了,D、E就必须去一个;
if(k==4||k==5)
cnt++;
}
if(cnt==0)
continue;
if(k==3)//如果k=C,C去了,D、E就只能去一个;
continue;
if(i==2||j==2){//如果B去了,D、E就不能都去。
if(j==4||j==5||k==4||k==5)
continue;
}
printf("%c %c %c
",'A'+i-1,'A'+j-1,'A'+k-1);
}
}
}
return 0;
}
#include
int main(){
printf("此项任务可以由如下三人组合:
");
for(int i=1;i<=5;i++){
for(int j=i+1;j<=5;j++){
for(int k=j+1;k<=5;k++){ //用i-j-k三个变量枚举三个人的组合情况
if((i==1&&j==3)||(i==1&&k==3))//AC不能都去
continue;
if(i==2&&j==3&&k==4)//BCD不能都去
continue;
int cnt=0;//BC至少需要去一个
if(i==2||j==2)cnt++;
if(i==3||j==3||k==3)cnt++;
if(cnt==0)
continue;
cnt=0;
if(i==3){//如果i=C,C去了,D、E就只能去一个;
if(j==4||k==4)cnt++;
if(j==5||k==5)cnt++;
}
if(cnt!=1)continue;
cnt=0;
if(j==3){//如果j=C,C去了,D、E就必须去一个;
if(k==4||k==5)
cnt++;
}
if(cnt==0)
continue;
if(k==3)//如果k=C,C去了,D、E就只能去一个;
continue;
if(i==2||j==2){//如果B去了,D、E就不能都去。
if(j==4||j==5||k==4||k==5)
continue;
}
printf("%c %c %c
",'A'+i-1,'A'+j-1,'A'+k-1);
}
}
}
return 0;
}
全部回答
- 1楼网友:長槍戰八方
- 2021-01-11 04:13
我暂时保留我的看法!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯