3awen 发表于 2023-4-6 09:43

关于选择课时的小算法

前言:
一个学习平台,有很多不同课时的课程,需要选择总和为13。
这里需要选择课程数量最少,且必须等于13课时的。(注:课程选多了,要多交费,选少了选多了都不行)
例子:
课时分布:3,4,5,3,4,6,6,2,3
总课时:13
以下为代码区:



.版本 2


.子程序 __启动窗口_创建完毕



.子程序 _按钮1_被单击
.局部变量 a, 整数型, , "0"
.局部变量 i, 整数型


a = { 3, 4, 5, 3, 4, 6, 6, 2, 3 }
所需值 = 13
.计次循环首 (取数组成员数 (a), i)
    排列 (a, i)
    .如果真 (已找到)
      跳出循环 ()
    .如果真结束


.计次循环尾 ()


.子程序 排列
.参数 a, 整数型, 数组
.参数 n, 整数型
.局部变量 i, 整数型
.局部变量 j, 整数型
.局部变量 k, 整数型
.局部变量 临时文本, 文本型
.局部变量 结果, 整数型


.计次循环首 (到整数 (求次方 (2, 取数组成员数 (a))) - 1, i)
    k = 0
    临时文本 = “”
    j = 1
    结果 = 0
    .判断循环首 (i ≠ 0)
      .如果真 (i % 2 = 1)
            k = k + 1
            临时文本 = 临时文本 + 到文本 (a )
            结果 = a + 结果
      .如果真结束
      i = i ÷ 2
      j = j + 1
    .判断循环尾 ()
    .如果真 (k = n)
      ' '''''这里改一下,可以打印所有满足情况
      .如果真 (结果 = 所需值)
            已找到 = 真
            调试输出 (“已找到”)
            编辑框1.加入文本 (临时文本 + “=” + 到文本 (结果) + “已找到” + #换行符)
            跳出循环 ()
      .如果真结束


    .如果真结束


.计次循环尾 ()
页: [1]
查看完整版本: 关于选择课时的小算法