| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1157 人关注过本帖
标题:帮忙看看问题在哪里?从n个元素中取出k个元素的组合算法
只看楼主 加入收藏
xichong
Rank: 7Rank: 7Rank: 7
来 自:四川南充
等 级:黑侠
威 望:2
帖 子:146
专家分:582
注 册:2009-6-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
帮忙看看问题在哪里?从n个元素中取出k个元素的组合算法
#include <stdio.h>
#define N 100
int a[N],nn;
void put(int *a,int m)//输出元素
{
    int i;
    for(i=1;i<=m;i++)
        printf("%d",a[i]);
    printf("\n");
}
void zuhe(int n,int k)//从n个元素中取出k个元素的组合
{
    nn=k;
    if(n==k)//1种组合
    {
        for(;n>0;n--)
            a[n]=n;
        put(a,nn);
    }   
     if(k==1)//k种组合
     {
         for(;n>0;n--)
        {
            a[k]=n;
            put(a,nn);
        }
     }
     if(k>1&&n>k)
     {
         zuhe(n-1,k);//1.从n-1个元素中取出k个元素的组合
         a[k]=n;//2.第k个元素取n;
         zuhe(n-1,k-1);//再从n-1个元素中取出k-1个元素的组合
     }
}
void main()
{
    zuhe(5,2);//从5个元素中取出2个元素的组合
}
搜索更多相关主题的帖子: 元素 算法 
2010-04-04 18:51
ltyjyufo
Rank: 9Rank: 9Rank: 9
来 自:未来
等 级:蜘蛛侠
威 望:2
帖 子:353
专家分:1166
注 册:2009-10-25
收藏
得分:3 
K==1时应该有n种组合吧

翱翔天空的雄鹰固然令人羡慕,却容易被禁锢于牢笼之中,只有那夜色中的蝙蝠才是真正自由的飞翔者....
2010-04-04 20:13
xichong
Rank: 7Rank: 7Rank: 7
来 自:四川南充
等 级:黑侠
威 望:2
帖 子:146
专家分:582
注 册:2009-6-10
收藏
得分:0 
哦,K==1时应该有n种组合吧,程序是那个意思
2010-04-04 20:38
asdjc
Rank: 6Rank: 6
来 自:武汉
等 级:侠之大者
威 望:7
帖 子:98
专家分:487
注 册:2010-1-22
收藏
得分:15 
你的意思是不是从从n个元素中任取k个元素并将所有情况输出,
是这意思的话,错误挺多的。
a[N]数组的赋值有问题;
输出时应该用新数组b[],否则你“a[k]=n;//2.第k个元素取n;”这样的赋值使a[]数组中发生变化;
嵌套语句有问题,应该是取出上界(可为>=k的任一数并非为n),即第k个输出数有n-k种情况。
         问题太多了,还是你来改吧!

2010-04-05 09:05
lanriver
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:133
专家分:101
注 册:2008-8-9
收藏
得分:2 
我想说我也是南充的。
2010-04-05 21:40
快速回复:帮忙看看问题在哪里?从n个元素中取出k个元素的组合算法
数据加载中...
 
   



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

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