习题求解,谢谢哒~

fish2music 2008-12-16 07:53:58
口袋中有红黄蓝白黑五种色的球若干个。每次从袋中取出3个不同色的球,问有多少种取法。
是不是要用到枚举类型,刚学到这里头有点昏昏的,请高手给个代码。万分感谢。
...全文
121 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fish2music 2008-12-18
  • 打赏
  • 举报
回复
搞定了,自己写个,多谢各位的帮助!

#include <iostream>
using namespace std;
int main()
{
int i,j,k,l,count=0;
for(k=1;k<=5;k++)
for(j=1;j<=5;j++)
for (i=1;i<=5;i++)
if(i!=j&&i!=k&&j!=k)
{
cout <<i<<" "<<j<<" "<<k<<endl;
count++;
}

cout <<"count="<<count<<endl;

}

inkink 2008-12-17
  • 打赏
  • 举报
回复
若干个太模糊了。


enum Color{red, black, blue, yellow, white};
Color cArray[]={/*所有的球*/};
int i, j, k, num=0, match=0;

for (i=0;i<sizeof(cArray)/sizeof(cArray[0]); i++)
{
for (j=0; j<i; j++)
{
for (k=0; k<j; k++)
{
num++;//一种排列组合
if ((cArray[i]!=cArray[j]) && (cArray[j]!=cArray[k])&&
(cArray[k]!=cArray[i]))
{
//颜色各不相同
match++;
}
}
}
}
printf("total=%d, match=%d\n", num, match);
lq20051610211 2008-12-17
  • 打赏
  • 举报
回复
hehe~
smdszgzh 2008-12-17
  • 打赏
  • 举报
回复

//用递归
#include <iostream>
using namespace std;
unsigned int f(int n)
{
return (n == 0 ||n == 1)? 1 : n * f(n -1);
}
int main(void)
{
int x=f(5)/f(3);
cout<<x<<endl;
return 0;
}


zhou25tao 2008-12-17
  • 打赏
  • 举报
回复
up
lvjaio5241 2008-12-16
  • 打赏
  • 举报
回复
#include <stdio.h>
void main()
{
enum color{red,yellow,blue,white,black};
enum color i,j,k,pri;
int n,loop;
n=0;
for(i=red;i<=black;i++)
for(j=red;j<=black;j++)
if(i!=j)
{
for((k!=1)&&(k!=j))
{
n=n+1;
printf("%-4d",n);
for(loop=1;loop<=3;loop++)
{
switch(loop)
{
case 1:pri=i;break;
case 2:pri=j;break;
case 3:pri=k;break;
default:break;
}
switch(pri)
{
case red:printf("%-10s","red");break;
case yellow:printf("%-10s","yellow");break;
case blue:printf("%-10s","blue");break;
case black:printf("%-10s","black");break;
default:break;
}
}
printf("\n");
}
}
printf("\ntotal:%5d\n",n);
}
太乙 2008-12-16
  • 打赏
  • 举报
回复
组合??直接写结果嘛~~

枚举,递归都能实现!
lsldd 2008-12-16
  • 打赏
  • 举报
回复

//3个循环穷举就行了,枚举本质上是个unsign int,可以做循环变量
enum Color{red, black, blue, yellow, white};
Color col;
for ( Color i = red, i <= white; i++)// 取得第一个球
{
for ( Color i = red, i <= white; i++)// 取得第二个球
{
for ( Color i = red, i <= white; i++)// 取得第三个求
{
// 在这里处理每种情况,判断当前情况是否和已经算过的情况相同
}
}
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧