| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1606 人关注过本帖
标题:小妹有个问题请教大家, c 语言怎么求组合啊, 分全给你们了
只看楼主 加入收藏
SpeedStar
Rank: 2
等 级:论坛游民
帖 子:24
专家分:29
注 册:2010-12-26
结帖率:0
收藏
已结贴  问题点数:66 回复次数:24 
小妹有个问题请教大家, c 语言怎么求组合啊, 分全给你们了
{ 1, 2, 3, 4, 5 } 选3个数的组合 怎么编程啊?
搜索更多相关主题的帖子: 怎么编程 
2011-01-03 11:00
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
收藏
得分:6 
组合?
组合到一个结构?还是根据一些算法组合到一个数据类型?
2011-01-03 11:10
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:6 
你意思是从中选三个。不重复组合。看能组多少种吗?
2011-01-03 11:33
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:0 
小妹子你讲清楚呀。不然哥哥们就没辄了。
2011-01-03 11:35
SpeedStar
Rank: 2
等 级:论坛游民
帖 子:24
专家分:29
注 册:2010-12-26
收藏
得分:0 
以下是引用刘定邦在2011-1-3 11:33:53的发言:

你意思是从中选三个。不重复组合。看能组多少种吗?
恩, 是这个意思
2011-01-03 11:35
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:0 
那用枚举法。好像能组合60种吧。
2011-01-03 11:39
SpeedStar
Rank: 2
等 级:论坛游民
帖 子:24
专家分:29
注 册:2010-12-26
收藏
得分:0 
以下是引用刘定邦在2011-1-3 11:39:45的发言:

那用枚举法。好像能组合60种吧。
大哥,你有搞错没? c(5, 3) = 10
2011-01-03 11:45
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:6 
main()
{
int a,b,c,j=0;
for(a=1;a<=5;a++)
{
 for(b=1;b<=5;b++)
 {
  if(a!=b)
  {
   for(c=1;c<=5;c++)
   {
    if(a!=c&&b!=c)
    {
     j=j+1;
     printf("case %d:%d,%d,%d\n",j,a,b,c);
    }
   }
  }
 }
}
}
总共应该是A(5,3)=60种可能 好像是

粗心是大敌
2011-01-03 12:04
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:6 
#include<stdio.h>
#include<time.h>
#include<stdlib.h>

int arr[10][3]={0};
void main()
{
  srand(time(0));
  int test(int o,int p,int q);
  int a[5]={1,2,3,4,5},i,j,o,p,q;
  for(i=0;i<10;)
   {
     do
        {
          o=rand()%5;
          p=rand()%5;
          q=rand()%5;
          if(o>p) {j=o;o=p;p=j;}
          if(o>q) {j=o;o=q;q=j;}
          if(p>q) {j=p;p=q;q=j;}
         }while(test(o,p,q));
      printf("组合%d: %d %d %d\n",i+1,a[o],a[p],a[q]);
      arr[i][0]=o; arr[i][1]=p; arr[i][2]=q;
      i++;
     }
}
int test(int o,int p,int q)
{
   int i;
   if(o==p||o==q||q==p)  
   return 1;
   for(i=0;i<10;i++)
               {
                 if(o==arr[i][0]&&p==arr[i][1]&&q==arr[i][2])
                     return 1;
               }
  return 0;
}
是组合,不是全排列,总共有10个吧.
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 qq1023569223 于 2011-1-3 12:59 编辑 ]

   唯实惟新 至诚致志
2011-01-03 12:12
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
但如果1,3,4和4,1,3一样的话,那就有c(5,3)=10种了
main()
{
int a,b,c,j=0;
for(a=1;a<=3;a++)
{
 for(b=a+1;b<=4;b++)
 {
  for(c=b+1;c<=5;c++)
  {
   j=j+1;
   printf("case %d:%d,%d,%d\n",j,a,b,c);
  }
 }
}
}

粗心是大敌
2011-01-03 12:14
快速回复:小妹有个问题请教大家, c 语言怎么求组合啊, 分全给你们了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018636 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved