
简单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;
} 展开
#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;
} 展开
1个回答
展开全部
这是排列组合的问题。所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序。组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。
取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出现过的颜色就不在出现了
取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出现过的颜色就不在出现了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询