PPT 生成整数序列字典序的r-组合算法

这篇具有很好参考价值的文章主要介绍了PPT 生成整数序列字典序的r-组合算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、PPT效果展示

PPT 生成整数序列字典序的r-组合算法,软件使用,算法,PPT,字典序,r-组合,组合的构造

二、问题

2.1 简述

给定一个整数序列 (1,2,3,…n),输出其所有字典序的r-组合,注意事项:

  1. 所有组合不能重复,每个组合中的元素顺序需为字典序 (从小到大)
  2. 所有组合呈字典序 (后一组合 > 前一组合)

例:给定整数序列123456,求其4-组合
开始组合:1234
中间组合:1235,1236,1245,…
结束组合:3456

2.2 算法简述

给定一个整数序列(1,2,3,...n),其r-组合:

  1. 其必从{ 1 , 2 , . . . , r 1,2,...,r 1,2,...,r}开始,到{ n − r + 1 , . . . , n − 1 , n n-r+1,...,n-1,n nr+1,...,n1,n}结束
  2. 存在最大的一个整数 k ∈ { 1 , . . . , r } k\in \{1,...,r\} k{1,...,r},使得 A k + 1 ≤ n A_k + 1 \leq n Ak+1n A k ∉ A A_k\notin A Ak/A ( A A A为当前组合, A k A_k Ak不属于当前组合)
  3. 新的组合 A = A = A= { A 1 , . . . , A k − 1 , A k + 1 , . . . , A k + r − k + 1 A_1, ..., A_{k-1}, A_k+1, ..., A_k+r-k+1 A1,...,Ak1,Ak+1,...,Ak+rk+1}
    其中, A 1 , . . . , A k − 1 A_1, ..., A_{k-1} A1,...,Ak1是上一个组合的前一部分,新的组合从 A k A_k Ak开始更新

(个人理解)核心思想就是:由于现组合中的元素为字典序,选取最大 k k k以及使用 A k + 1 , A k + 2 , . . . A_k + 1, A_k+2, ... Ak+1,Ak+2,... 替换 A k A_k Ak及其后的元素,即可保证替换后依旧为字典序,且刚好比前一组合大“一点”

2.3 例子

例:整数序列1-6的4-组合,从1236 -> 1245: A = A = A= { A 1 = 1 , A 2 = 2 , A 3 = 3 , A 4 = 6 A_1=1, A_2=2, A_3=3, A_4=6 A1=1,A2=2,A3=3,A4=6}

  1. k = 4 k=4 k=4 A 4 = 6 A_4 = 6 A4=6 A 4 + 1 > 6 A_4 + 1 > 6 A4+1>6,不符合条件。
  2. 存在最大的 k = 3 k=3 k=3,使得 A 3 + 1 = 4 A_3+1 = 4 A3+1=4,4小于6且不属于1236。
  3. 新的组合从 A 3 A_3 A3开始更新,即 { A 1 , A 2 , A 3 + 1 , A 3 + 4 − 3 + 1 A_1,A_2,A_3+1,A_3+4-3+1 A1,A2,A3+1,A3+43+1} =
    { 1 , 2 , 3 + 1 , 3 + 4 − 3 + 1 1, 2 ,3+1, 3+4-3+1 1,2,3+1,3+43+1} = { 1 , 2 , 4 , 5 1,2,4,5 1,2,4,5}

三、PPT实现

可到博客顶端 or 通过此链接 进入资源页下载完整PPT,放映即可用

亦可自行开发:在PPT左上角选择开发工具
主要控件:文本框 和 按钮
PPT 生成整数序列字典序的r-组合算法,软件使用,算法,PPT,字典序,r-组合,组合的构造

核心源码:

Public Sub F()
    s_all = T_in.Text
    n = Len(T_in.Text)
    num = T_num.Text
    s = L_c.Caption
    k = 0
    ak = 0
    flag = 0
    
    ' 计算k和Ak
    For i = 1 To num
        flag = 1
        ' 如果大于n 则直接退出
        a = Mid(s, i, 1) + 1
        If (Val(a) > n) Then
            Exit For
        End If
        For j = i To num
            ' 如果不符合条件 标志位set为0 跳出循环
            b = Mid(s, j, 1)
            If (StrComp(a, b, 1) = 0) Then
                flag = 0
                Exit For
            End If
        Next j
        If StrComp(flag, 1, 0) = 0 Then
             k = i
        End If
    Next i
 
    
    L_k.Caption = k
    L_ak.Caption = Mid(s, k, 1)
    ak = L_ak.Caption
    
    ' 下一个组合
    For i = num To k Step -1
        'Dim tmp As String
        'tmp = ak - k + 1 + i s_all
        's = Replace(s, Mid(s, i, 1), Mid(s_all, ak - k + 1 + i, 1))
        Mid(s, i, 1) = Mid(s_all, ak - k + 1 + i, 1)
    Next i
    
    L_next.Caption = s
End Sub

Private Sub B_next_Click()
    s_all = T_in.Text
    n = Len(T_in.Text)
    num = T_num.Text
    L_c.Caption = L_next.Caption
    T_show = T_show + L_c.Caption + vbCr + vbLf
    If StrComp(L_c.Caption, Mid(s_all, n - num + 1, num), 1) = 0 Then
        MsgBox "已经是最后一个组合了"
        Exit Sub
    End If
    Call F
    'current = L_c.Caption
    'MsgBox current
    'MsgBox num
    'current = Replace(current, Mid(current, 1, 1), Mid(s, 2, 1))
    'MsgBox current
End Sub

Private Sub B_s_Click()
    s = T_in.Text
    num = T_num.Text
    L_c.Caption = Mid(s, 1, num)
    T_show = ""
    T_show = T_show + L_c.Caption + vbCr + vbLf
    Call F
End Sub

Private Sub T_show_Change()

End Sub

可参考的C源码

r-组合: https://blog.csdn.net/ld326/article/details/84341452文章来源地址https://www.toymoban.com/news/detail-708526.html

到了这里,关于PPT 生成整数序列字典序的r-组合算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python入门(5)序列、字典、集合

    Python 中的序列是一种数据类型,用于存储一组有序的元素。序列是 Python 中最基本的数据结构之一,具有以下基本特性: 有序性:序列中的元素按照一定的顺序排列,可以通过索引访问和操作特定位置的元素。 可迭代性:序列可以进行迭代操作,例如使用循环遍历序列中的

    2024年02月06日
    浏览(39)
  • 【华为OD机考 统一考试机试C卷】分解连续正整数组合/ 分解正整数(C++ Java JavaScript Python)

    2023年11月份,华为官方已经将 华为OD机考:OD统一考试(A卷 / B卷)切换到 OD统一考试(C卷)和 OD统一考试(D卷) 。根据考友反馈:目前抽到的试卷为B卷或C卷/D卷,其中C卷居多 ,按照之前的经验C卷D卷部分考题会复用A卷/B卷题,博主正积极从考过的同学收集C卷和D卷真题,

    2024年01月19日
    浏览(45)
  • 整数序列(山东大学考研机试题)

    题目链接:3717. 整数序列 - AcWing题库

    2024年02月13日
    浏览(51)
  • 任意给定 n 个整数,求这 n 个整数序列的和、最小值、最大值

    编程思路是: 1.先创建并初始化min(最小值),max(最大值),sum(和),n(即将输入的n个整数的范围),a(用户输入的数字,a1,a2,a3) 2.cin读入用户输入的范围n,并cout一段文字提示用户 3.用for循环,录入小于n次的a的数据,用户可用空格或回车换行输入之后的文字(可以在循环

    2024年02月07日
    浏览(43)
  • 【工具篇】SerializableDictionary字典序列化Unity面板显示

    目录 一:导入插件 二:创建目标字典类 三:生成数据  四:自定义配置数据 Unity本身对字典这种数据结构没有序列

    2024年02月15日
    浏览(35)
  • AcWing93. 递归实现组合型枚举:输出从1~n中随机选出的m个整数

    从 1∼ n n n 这 n n n 个整数中随机选出 m m m 个,输出所有可能的选择方案。 两个整数 n , m , n,m, n , m , 在同一行用空格隔开。 按照从小到大的顺序输出所有方案,每行 1 个。 首先,同一行内的数升序排列,相邻两个数用一个空格隔开。 其次,对于两个不同的行,对应下标的数

    2024年02月07日
    浏览(33)
  • 【Python入门【推导式创建序列、字典推导式、集合推导式】(九)

    👏作者简介:大家好,我是爱敲代码的小王,CSDN博客博主,Python小白 📕系列专栏:python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 🔥如果感觉博主的文章还不错的

    2024年02月15日
    浏览(64)
  • 好用的fuzz字典以及fuzz字典生成工具

    https://github.com/fuzzdb-project/fuzzdb https://github.com/TheKingOfDuck/fuzzDicts https://github.com/TuuuNya/fuzz_dict https://github.com/jas502n/fuzz-wooyun-org 前言 学习xss的时候翻阅资料发现了一个文件上传漏洞fuzz字典生成脚本小工具,试了试还不错,分享一下 配置 需要python2环境 工具地址:https://github.com

    2024年02月07日
    浏览(34)
  • 【Python 笔记(二)——基本语句 变量类型 字符串 序列 列表与元组 字典与集合】

    在 Python 中,基本语句可以帮助我们完成一些基本的操作,如控制流程、定义函数等。以下是 Python 中的几种基本语句: if 语句 if 语句用于判断某个条件是否成立,如果条件成立则执行相应的代码块。 for 语句 for 语句用于遍历序列中的元素,依次执行相应的代码块。 while 语

    2024年02月08日
    浏览(48)
  • 密码字典生成工具:crunch

            现在网络安全的设备层出不穷,各种网络安全设备不管是对于内网还是对于外网的防护达到了细致入微。社会工程学作为渗透中非常重要的一环,有着非常大的威力,社会工程学最重要的就是密码的暴力破解,暴力破解最重要的就是密码字典。字典的质量直接影响

    2024年01月24日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包