`
美丽的小岛
  • 浏览: 309208 次
  • 性别: 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. 程序比较简陋...

    包含R-4.1.2、RStudio-1.0.153、RStudio1.4.1106

    总的来说,这个压缩包为用户提供了R语言和RStudio的组合,适用于进行数据探索、统计分析和报告生成。无论你是初学者还是经验丰富的数据科学家,这个组合都能为你提供一个强大且灵活的工作平台,帮助你更好地实现数据...

    R-win-4.0.1&RStudio

    RStudio是一款集成开发环境(IDE),专门为R语言打造。RStudio-1.3.959.exe是RStudio的安装程序,包含了用户友好的界面,便于编写、调试和运行R代码。该版本提供了代码自动完成、项目管理、图形查看器、调试工具和...

    深信服桌面云一体机VDS-R-7550

    该解决方案基于“SSD+机械硬盘”混合磁盘组合,以较低价格实现高IO性能。同时,该解决方案还提供了一体化方案,降低购买成本,提高业务效率和安全性。 易用性好 深信服桌面云一体机VDS-R-7550提供了易用的解决方案...

    组合数学- 组合数.rar

    4. Pascal's Rule(帕斯卡定律):\( C(n+1,r) = C(n,r) + C(n,r-1) \),这个性质可以通过组合数的图形表示——二项式系数三角形(Pascal's Triangle)来直观理解。 组合数在计算机科学中有多种应用,例如: - 排列...

    eclipse-java-2022-03-R-linux-gtk-x86_64.tar.gz

    这个压缩包采用的是tar.gz格式,是Linux系统中常用的归档和压缩工具组合,它首先使用tar进行文件打包,然后用gzip进行压缩,以节省存储空间。 描述中提到的“适用于Linux x86_64”,意味着这个Eclipse版本是为64位...

    电子科技大学 - 组合数学 - 卢光辉\杨国武 -2017期末试卷

    5. 特定条件下r位数的组合计数问题。题目要求求出由数字0-7组成的r位数中,满足特定条件(1和3出现偶数次,4和6至少出现一次)的数的个数。这种问题需要运用组合数学中的组合计数原理,通过分情况讨论的方法来求解。...

    行业文档-设计装置-组合保温墙体.zip

    热工性能主要通过传热系数K值和热阻R值来衡量;结构性能关注墙体的承载力、抗裂性和耐久性;环境性能则涉及材料的环保性、可回收性及对室内环境的影响。 五、法规与标准 设计和施工过程中,必须遵循国家和地方的...

    SGR-W500-N82b编程器固件.rar

    这种硬件组合使得SGR-W500-N82b在无线和有线连接方面都有出色的表现。 在固件方面,提到了“胖瘦固件”和“小博固件”。胖固件(FAT firmware)通常包含完整的用户界面和各种功能,适合对初学者友好,用户可以直接...

    数学奥林匹克辅导丛书-组合恒等式.pdf

    - **范德蒙德恒等式**:对于任意非负整数m, n, r,有\(\sum_{k=0}^{r}\binom{m}{k}\binom{n}{r-k} = \binom{m+n}{r}\),该恒等式表明了两个集合合并后的组合数可以通过分别计算每个集合的组合数然后相加得到。...

    使用r语言研究资产组合收益率峰度_-r-.zip

    使用r语言研究资产组合收益率峰度_-r-

    R-studio使用指南

    R-Studio 是一款功能强大的数据恢复软件,可以自动将分区结构、分区大小、分区类型、删除的数据文件、丢失的数据文件,无链接的单类型文件计算分析组合整理出来。 R-Studio 使用指南 在开始使用 R-Studio 之前,...

    复旦大学计算机科学与工程系-吴永辉-离散数学-组合数学.ppt

    1. 设f是D到R的函数,这里|D|&gt;|R|,令i= |D|/ |R|,则D中存在i个元素d1, d2, ……, di,使得f(d1)=f(d2)=……f(di)。 组合数学是一门重要的学科,它对算法研究和计算机科学的发展产生了重要影响。本资源摘要...

    C++实现生成组合算法

    C++实现生成组合算法 在计算机科学和数学中,组合算法是一种常用的算法,用于生成所有可能的组合...C++ 实现生成组合算法可以通过基于 2 字典的生成全部组合算法、Even 算法、递归算法等来实现生成全部组合和 r-组合。

    使用R语言构造投资组合

    "使用R语言构造投资组合" 在金融投资分析中,构造投资组合是历久弥新的问题。多年以来,学界、业界提出诸多对投资组合进行优化的方法。其中,最经典的基于收益率均值和收益率波动性进行组合优化的方法,即 Mean-...

    高中数学公式大全-8-排列组合

    组合数的两个性质是指C(n,r)=C(n,n-r)和C(n,r)=C(n-1,r)+C(n-1,r-1)。前者表示从n个不同元素中选择r个元素的方法数等于从n个不同元素中选择n-r个元素的方法数;后者表示从n个不同元素中选择r个元素的方法数等于从n-1...

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

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

    高考数学总复习------排列组合及概率统计.doc

    展开式中的每一项都由组合数C决定,即第r+1项Tr+1=C(n, r)a^(n-r)b^r。 - 通项公式为:\( T_{r+1} = C(n, r)a^{n-r}b^r \) - 二项式系数的性质: - 中间项的系数最大(n为偶数时是单个最大,n为奇数时是两个相等...

    什么是Mask R-CNN?Mask R-CNN的工作原理.docx

    4. 将预测的掩码和 bounding box regression 结果组合,生成最终的检测结果 Mask R-CNN 模型的优点是可以对目标进行像素级的分割,能够精准地检测出目标的轮廓。这种能力对于自动驾驶汽车、机器人控制等应用场景...

Global site tag (gtag.js) - Google Analytics