`
美丽的小岛
  • 浏览: 297174 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

r-组合

 
阅读更多

算法描述而下(来自组合数学):

从r-组合a1a2...ar=1234....r开始。

当a1a2...ar!=(n-r+1)(n-r+2)...n时,做

(1)确定最大的整数K,使ak+1<=n且ak+1不是a1,a2,a3,...,ar.

(2)用r-组合

               a1...ak-1(ak+1)(ak+2)...(ak+r-k+1)

替换a1a2...ar.

代码:

 

#include <stdio.h>
#define N 7//集合中有N个数
#define M 5//任意取M个数出来
int a[N] ;
int b[M] ;
void init(){//初始化这两个数组
        int i ;
        for(i=0 ;i < N ; i++){
                a[i] = i + 1 ;
        }
        for(i=0 ; i < M ; i++){
            b[i] = a[i] ;
        }
}
int check(int t){//判断t是否在b数组中
        int i = 0 ;
        while( (i<M) && (b[i] != t) ) i++ ;
        if(i == M) return 1 ;//表示元素不是集合中
        else return 0 ;//表于元素在集合中
}
int getK(){//得到满足一定条件的k,这样的条件ak+1<=n,而且ak不在b数组中的,最大的那个k
    int max = a[N-1] ;//取最大的数
    int i ;
    int t ;
    for(i=M-1 ; i>=0 ; --i){
        t = b[i] + 1 ;
        if(t <= max && check(t) && (b[i]+M-i)<=max){
            return i ;
        }
    }
    return -1 ;
}
int  replace(){//用新的数去代替旧的数据
        int k = getK() ;
        if(k == -1) return -1 ;
        int c = b[k];
        for(;k<M; k++) {
            b[k] = c + 1 ;
            ++c ;
        }
        return 1 ;
}
void show(){
        int i ;
        for(i = 0 ; i<M; i++){
            printf("%d ",b[i]) ;
        }
        printf("\n") ;
}

int main(){
    int count = 1 ;
    init() ;
    while(1){
        show() ;
        if(replace() == -1) {
            break ;
        }
        ++count ;
    }
    printf("count = %d",count) ;
    return 0;
}

 

运行结果:

 

 

  • 大小: 31.9 KB
0
0
分享到:
评论

相关推荐

    整数序列的字典序r-组合算法.pptm

    嵌入到PPT当中的整数序列的字典序r-组合算法,PPT放映可展示了每一步的流程 使用简介: 1. 打开PPT,如显示部分活动内容被禁用,点击启用内容 (使用VB编写的) 2. 点击放映即可启动程序,以PPT的形式 3. 程序比较简陋...

    自己写的linux ls 命令 包括 -l -R -a -U 及各种组合,还有是三种特殊位

    自己写的linux ls 命令 包括 -l -R -a -U 及各种组合,还有是三种特殊位

    论文研究-基于vine copula方法的股市组合动态VaR测度及预测模型研究.pdf

    以世界十大股票市场指数为例,运用滚动MonteCarlo模拟技术,实证计算了R-vine、D-vine、C-vine及R-vineall t四种vinecopula结构对投资组合的动态VaR预测值,并进一步运用...

    smc-空气组合元件AC.pdf

    smc-空气组合元件ACpdf,smc-空气组合元件AC系列:  空气过滤器用于对气源的清洁,可过滤压缩空气中的水分,避免水分随气体进入装置。 减压阀可对气源进行稳压,使气源处于恒定状态,可减小因气源气压突变时对阀门或...

    使用R语言构造投资组合

    使用R语言构造投资组合

    组合数学- -r排列

    组合数学 r排列算法。比较简单的一种算法。

    Android代码-组合动作点击的视图效果

    .cornerRadius(dimen(R.dimen.cb_dimen_25), dimen(R.dimen.cb_dimen_52))// Following three to***** values must be the same can morph to circle .width(dimen(R.dimen.cb_dimen_70), dimen(R.dimen.cb_dimen_...

    论文研究-基于Relief和SVM-RFE的组合式SNP特征选择.pdf

    针对SNP的全基因组关联分析面临SNP数据的高维小样本特性和遗传疾病病理的复杂性两大难点, 将特征选择引入SNP全基因组关联分析中, 提出基于Relief和SVM-RFE的组合式SNP特征选择方法。该方法包括两个阶段:Filter阶段,...

    C#界面实现重集的r组合求解

    本程序实现了重集的r组合求解问题,并且支持大数操作,界面优化

    1-5求n个数中r个数的全部组合问题

    三个齿轮啮合。如图在齿轮箱里三个齿轮互相衔接,某瞬间两对齿相遇,设计一个算法求出,各齿轮各转多少圈后,这两对齿同时重逢。如图示。(说明:用a,b,c分别表示三个齿轮的齿数。) 算法设计: ...

    论文研究-基于Copula-CVaR-EVT方法的供应链金融质物组合优化.pdf

    论文研究-基于Copula-CVaR-EVT方法的供应链金融质物组合优化.pdf, 为缓释当下供应链金融业务单一质物价格剧烈波动诱发的贷款集中度风险,异于股票、债券等金融资产组合...

    论文研究-最优RGB线性组合颜色模型目标检测方法.pdf

    为提高目标检测的准确性...顺光、侧光、侧逆光、逆光4种采光拍摄条件下120幅图像的试验结果表明:该方法较R-B、2R-G-B、G-B法的目标与背景灰度差值都大、误检率与漏检率都低,可广泛用于与背景存在颜色差异的目标检测。

    R语言投资组合回测和风险分析

    在本教程中,我们将使用R编程语言和PerformanceAnalytics库来进行投资组合回测和风险分析。 回测是一种通过模拟历史市场数据来评估投资策略的方法。我们将探索如何使用投资组合回测来比较不同的投资组合构建方法,...

    一种R-C-R组合式 12位逐次逼近A /D转换器 (2010年)

    采用一种 R-C-R组合式逐次逼近 A/D转换方法,基于 UMC90 nm CMOS工艺设计了一种12位1 兆赫兹采样频率的逐次逼近型 A/D转换器 。在电路设计上,通过复用两段式电阻梯结构,有效地降低了系 统对电容阵列的匹配性要求 。在...

    R语言 对日期数据的缺失补全方法

    主要是通过R语言,对日期数据进行处理,并补全缺失数据 rawdata&lt;- read.csv("C:/Users/li/Desktop/ss.csv",fill=F) #提取数据 ss1,并组合数据------------------------------- ts1&lt;-rawdata$ts1 ts11&lt;-as.Date(ts1,...

    统计计算-MH算法(R语言)

    按照参数的概率分布生成随机的参数,按照这一系列参数的组合,计算当前点的概率密度。依据当前点和起始点概率密度比值是否大于(0,1)之间的随机数来判断是否保留当前点。若当前点的概率密度大于该随机数,就称这种...

    r-排列非递归生成算法及应用 (2013年)

    该算法使用栈和队列,并引入标记已选元素的方法,避免了回溯时的重复选择,生成的r一排列具有分组和对称性,且符合字典序,此算法也能生成全排列,利用该算法提出了r-组合生成算法,分析了它们的时间和空间复杂度,...

    论文研究-二手房组合交易匹配决策方法.pdf

    论文研究-二手房组合交易匹配决策方法.pdf, 针对二手房组合交易匹配决策问题, 提出了一种新的决策分析方法. 首先, 给出二手房组合交易匹配、个体理性、不浪费、公平、...

    组合数学之排列组合生成算法

    组合数学之排列组合生成算法,很好的学习组合排列算法的资料

    曙光天阔服务器A840r-G产品技术白皮书

    曙光天阔A840r-G是一款4U四路64位机架式服务器。该机型采用最新一代AMD Opteron 6100系列8或12核处理器。CPU代号”Magny‐\\\Cours”,采用HT3.0直连 架构(6.4/GT/s),12MB L3 缓存。系统最大支持四路48个处理核心...

Global site tag (gtag.js) - Google Analytics