| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1487 人关注过本帖
标题:从数组中取出3个数的组合
只看楼主 加入收藏
lvyabing_1980
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-8-9
收藏
 问题点数:0 回复次数:8 
从数组中取出3个数的组合
数组a[]={1,3,5,6,7,9,11,12,15,16,22},求取出3个数的组合?   

我只能做出连续几个数中取出3个的组合的程序,上面的这个就不行,请高手不吝赐教,谢谢!

下面是从连续几个数中取出3个数组合

#include <stdio.h>
# define MAXN 130
int a[MAXN];

void comb(int m,int k)
{ int i,j;

for (i=m;i>=k;i--)
{ a[k]=i;
if (k>1)
comb(i-1,k-1);
else
{
   for (j=a[0];j>0;j--)
printf("%5d",a[j]);
printf(",");


}
}
}




void main()
{ a[0]=3;
comb(11,3);
}
搜索更多相关主题的帖子: include 
2008-08-09 11:41
lvyabing_1980
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-8-9
收藏
得分:0 
若是将结果保存在数组中,有如何解,请高手赐教
2008-08-10 13:54
Cromwell
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-8-9
收藏
得分:0 
1,把题意说清楚些好不?
2,麻烦程序上加些注释语句
2008-08-10 14:33
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
程序代码:
/*******************************************************************************

        数组a[]={1,3,5,6,7,9,11,12,15,16,22},求取出3个数的组合.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        我这么理解题意也不知对不对,献献丑,作一个程序,如有
    不对地方,请指教。谢谢。

*******************************************************************************/
#include<stdio.h>
int main(void)
{
        int a[11]={1,3,5,6,7,9,11,12,15,16,22};
        int i,j,k;
        for(i=0;i<11;i++)
            for(j=0;j<11;j++)
                for(k=0;k<11;k++)
                    if(i!=j&&j!=k&&i!=k)
                        printf("%d %d %d\n",a[i],a[j],a[k]);
        getch();
}
2008-08-10 15:22
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
ls的算法并不快。

比较好的算法是dfs或者用DP。不过这里用DP就大材小用了。

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-08-10 15:55
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 5# 卧龙孔明 的帖子
百度搜了一下,dfs是利用栈的非递归算法(我是这么理解的)。不过搜了一会,没发现经典的程序。
孔明朋友能不能就这道题作一简单(或者说是比较经典)的程序,让我们来深刻理解一下呢?或者能发个
网页的链接也可以,非常想学一学。谢谢。

[[it] 本帖最后由 广陵绝唱 于 2008-8-10 17:07 编辑 [/it]]
2008-08-10 17:06
liyanhong
Rank: 3Rank: 3
来 自:水星
等 级:禁止访问
威 望:8
帖 子:1867
专家分:0
注 册:2008-5-3
收藏
得分:0 
把判断放上面会不会好点
#include<stdio.h>
int main(void)
{
        int a[11]={1,3,5,6,7,9,11,12,15,16,22};
        int i,j,k;
        for(i=0;i<11;i++)
            for(j=0;j<11;j++)
                if(i!=j)
                for(k=0;k<11;k++)
                    if(i!=k&&j!=k)
                        printf("%d %d %d\n",a[i],a[j],a[k]);
        getch();
}

爱上你 是 我的错  可是离 开  又舍不得  听着你为我写的歌     好难过
如果说 我说如果  我们还 能  重新来过   不去计 较 谁对谁错  会怎么做
2008-08-12 10:17
pigstock
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-8-14
收藏
得分:0 
题目要求的是组合,所以不要求顺序不一样,是不是应该这样:
#include<stdio.h>
int main(void)
{
        int a[11]={1,3,5,6,7,9,11,12,15,16,22};
        int i,j,k;
        for(i=0;i<9;i++)
            for(j=i+1;j<10;j++)
                for(k=j+1;k<11;k++)
                        printf("%d %d %d\n",a[i],a[j],a[k]);
        getch();
}
2008-08-15 00:02
lvyabing_1980
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-8-9
收藏
得分:0 
如果把上面的组合存入一个二维数组,又该些怎样一个函数????
2008-08-15 21:41
快速回复:从数组中取出3个数的组合
数据加载中...
 
   



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

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