| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 1606 人关注过本帖
标题:小妹有个问题请教大家, c 语言怎么求组合啊, 分全给你们了
取消只看楼主 加入收藏
SpeedStar
Rank: 2
等 级:论坛游民
帖 子:24
专家分:29
注 册:2010-12-26
结帖率:0
收藏
已结贴  问题点数:66 回复次数:4 
小妹有个问题请教大家, c 语言怎么求组合啊, 分全给你们了
{ 1, 2, 3, 4, 5 } 选3个数的组合 怎么编程啊?
2011-01-03 11:00
SpeedStar
Rank: 2
等 级:论坛游民
帖 子:24
专家分:29
注 册:2010-12-26
收藏
得分:0 
以下是引用刘定邦在2011-1-3 11:33:53的发言:

你意思是从中选三个。不重复组合。看能组多少种吗?
恩, 是这个意思
2011-01-03 11:35
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
SpeedStar
Rank: 2
等 级:论坛游民
帖 子:24
专家分:29
注 册:2010-12-26
收藏
得分:0 
以下是引用御坂美琴在2011-1-3 12:27:55的发言:

int next_combination(int* pArray, int nLen, int nSel)
{
    if (pArray[nLen - 1] + 1 < nSel)
    {
        ++pArray[nLen - 1];
        return 1;
    }
    else
    {
        int it = 2;
        while (it <= nLen && pArray[nLen - it] + it == nSel)
            ++it;
        if (it <= nLen)
        {
            int i;
            pArray[nLen - it]++;
            for (i = nLen - it + 1; i < nLen; ++i )
            {
                pArray = pArray + 1;
            }
            return 1;
        }
        else
        {
            return 0;
        }
    }
}
 
#include  
 
int main()
{
    int arrmap[] = {1, 2, 3, 4, 5};
    int arr[] = {0, 1, 2};
    do
    {
        int i;
        for (i = 0; i < 3; ++i)
        {
            printf("%d ", arrmap[arr]);
        }
        puts("");
    } while (next_combination(arr, 3, 5));
    return 0;
}
 
无重复组合计算
next_combination的参数是:
第一个是长度至少为n的数组,
第二个写n
第三个写m
计算m个里面选n个的组合,那个数组事先需要初始化为0,1,2,3...的形式
然后,next_combination函数每调用一次,就得到下一个组合
arrmap是用来把0 - n-1 映射到你需要的数值用的
你这代码太先进了,我一时半会看不懂~~
2011-01-03 12:43
SpeedStar
Rank: 2
等 级:论坛游民
帖 子:24
专家分:29
注 册:2010-12-26
收藏
得分:0 
能不能根据下面这个图 深搜一下让小妹学学
图片附件: 游客没有浏览图片的权限,请 登录注册
2011-01-03 12:45
快速回复:小妹有个问题请教大家, c 语言怎么求组合啊, 分全给你们了
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023143 second(s), 11 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved