简单C++语言问题,口袋中有红,黄,黑,白,蓝,五色球若干,每次从口袋里面取3个不同颜色球,问有多少

口袋中有红,黄,黑,白,蓝,五色球若干,每次从口袋里面取3个不同颜色球,问有多少种?用枚举类型做?用数学一算答案是10,但是编的怎么是60,错在哪?#include<io... 口袋中有红,黄,黑,白,蓝,五色球若干,每次从口袋里面取3个不同颜色球,问有多少种?用枚举类型做?用数学一算答案是10,但是编的怎么是60,错在哪?
#include <iostream.h>
void main()
{ enum color{red,yellow,blue,white,black};//枚举类型的定义
enum color prj;
int n=0,loop,i,j,k;
for(i=red;i<=black;i++)
for(j=red;j<=black;j++)
if(j!=i)
{for(k=red;k<=black;k++)
if((k!=i)&&(k!=j))
{n=n+1;
cout.width(4);
cout<<n;

for(loop=1;loop<=3;loop++)
{switch(loop)
{case 1:prj=(enum color)i;break;
case 2:prj=(enum color)j;break;
case 3:prj=(enum color)k;break;
default:break;
}
switch(prj)
{case red: cout<<" red";
case yellow: cout<<" yellow";
case blue: cout<<" blue";
case white: cout<<" white";
case black: cout<<" black";
default:break;
}
}
cout<<endl;
}
}
cout<<"total:"<<n<<endl;
}
展开
 我来答
寻平阳
推荐于2016-12-01 · TA获得超过1525个赞
知道小有建树答主
回答量:1235
采纳率:0%
帮助的人:1121万
展开全部
这是排列组合的问题。所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序。组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。

取3个不同颜色球,
如果要求顺序
1红2黄3黑
1黄2红3黑
算2种,那么以此类推总和就有60种
而你的没有要求顺序,
算1种,那么以此类推总和就有10种

而你的程序之所以是60种,就是要求了顺序
比如i=红,j=黄,k=黑 ,你的代码成立
比如i=黄,j=红,k=黑 ,你的代码也成立

修改方法应该是:
for(i=red;i<=black;i++)
for(j=i+1;j<=black;j++)//i出现过的颜色就不在出现了
{for(k=j+1;k<=black;k++)//i,j出现过的颜色就不在出现了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式