开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 222|回复: 7
收起左侧

[已解决] 不重复组合

 关闭 [复制链接]
结帖率:80% (4/5)
发表于 2025-10-30 12:59:15 | 显示全部楼层 |阅读模式   山西省晋城市
8精币
数组{"A","B","C","D"}   4个数组
数组{"A","B","C","D","E"}   5个数组


比如有4个文本数组  生成  不重复组合有  24个组合  

比如有5个文本数组  生成  不重复组合有  120 个组合  




在论坛找了个例子   但是  数组多的话就蹦了  或者卡死  就不行了   

有没有  好的方法  稳定  快速  

最佳答案

查看完整内容

[e=0].版本 2 .支持库 EThread .支持库 spec .程序集 窗口程序集_启动窗口 .程序集变量 结果数组, 文本型, , "0" .子程序 _按钮1_被单击 启动线程 (&子程序22, , ) .子程序 子程序22, , , 本子程序在程序启动后最先执行 .局部变量 输入数组, 文本型, , "0" .局部变量 数组大小, 整数型 .局部变量 i, 整数型 输入数组 = { “A”, “B”, “C”, “D”, “E”, “F”, “G”, “H” } 数组大小 = 取数组下标 (输入数组, ) 排 ...

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值

结帖率:96% (26/27)

签到天数: 9 天

发表于 2025-10-30 12:59:16 | 显示全部楼层   贵州省遵义市
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
结果数组文本型0 

子程序名返回值类型公开备 注
_按钮1_被单击  
启动线程 (&子程序22, , )
子程序名返回值类型公开备 注
子程序22 本子程序在程序启动后最先执行
变量名类 型静态数组备 注
输入数组文本型0
数组大小整数型 
i整数型 
输入数组 = { “A”, “B”, “C”, “D”, “E”, “F”, “G”, “H” }
数组大小 = 取数组下标 (输入数组, )
排列组合 (输入数组, 0, 数组大小 - 1)
调试输出 (取数组成员数 (结果数组))
子程序名返回值类型公开备 注
排列组合 生成所有不重复的排列组合
参数名类 型参考可空数组备 注
数组文本型
开始位置整数型
结束位置整数型
变量名类 型静态数组备 注
i整数型 
临时文本型 
如果真 (开始位置 = 结束位置)
加入成员 (结果数组, 数组到文本 (数组, “”))

计次循环首 (结束位置 - 开始位置 + 1, i)
交换元素 (数组, 开始位置, 开始位置 + i - 1)
排列组合 (数组, 开始位置 + 1, 结束位置)
交换元素 (数组, 开始位置, 开始位置 + i - 1)
计次循环尾 ()
子程序名返回值类型公开备 注
交换元素 交换数组中的两个元素
参数名类 型参考可空数组备 注
数组文本型
i整数型
j整数型
变量名类 型静态数组备 注
临时文本型 
临时 = 数组 [i + 1]
数组 [i + 1] = 数组 [j + 1]
数组 [j + 1] = 临时
子程序名返回值类型公开备 注
数组到文本文本型 将数组转换为字符串
参数名类 型参考可空数组备 注
数组文本型
分隔符文本型
变量名类 型静态数组备 注
结果文本型 
i整数型 
计次循环首 (取数组下标 (数组, ), i)
结果 = 结果 + 数组 [i] + 分隔符
计次循环尾 ()
返回 (取文本左边 (结果, 取文本长度 (结果)取文本长度 (分隔符)))


i支持库列表   支持库注释   
EThread多线程支持库
spec特殊功能支持库

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:80% (4/5)

签到天数: 2 天

 楼主| 发表于 2025-10-30 13:01:51 | 显示全部楼层   山西省晋城市
  
子程序名返回值类型公开备 注
生成不重复数据  
参数名类 型参考可空数组备 注
P_前缀文本型
P_数组文本型
P_结果文本型
变量名类 型静态数组备 注
L_前缀文本型 
临时数组文本型0
n整数型 
如果真 (取数组成员数 (P_数组) = 1)
L_前缀 = P_前缀 + P_数组 [1]
加入成员 (P_结果, L_前缀)
返回 ()

计次循环首 (取数组成员数 (P_数组), n)
临时数组 = P_数组
L_前缀 = P_前缀 + 临时数组 [n]
删除成员 (临时数组, n, 1)
生成不重复数据 (L_前缀, 临时数组, P_结果)
计次循环尾 ()
返回 ()



这个是我在论坛找了一个   生成的结果符合我  但是  数组多了就不行了
回复

使用道具 举报

结帖率:0% (0/2)
发表于 2025-10-30 13:10:53 | 显示全部楼层   浙江省宁波市
.版本 2  .子程序 _按钮1_被单击, , , ‘最终版的 .局部变量 USL, 双精度小数型 .局部变量 LSL, 双精度小数型 .局部变量 中心值, 双精度小数型 .局部变量 标准差, 双精度小数型 .局部变量 i, 整数型 .局部变量 u1, 双精度小数型 .局部变量 u2, 双精度小数型 .局部变量 z, 双精度小数型 .局部变量 临时数值, 双精度小数型 .局部变量 结果文本, 文本型 .局部变量 小数位数, 整数型 .局部变量 目标Cpk, 双精度小数型 .局部变量 行, 整数型 .局部变量 列, 整数型 .局部变量 索引, 整数型 .局部变量 数值文本, 文本型 .局部变量 结果文本5, 文本型  ' 【1. 获取输入并验证】 USL = 到数值 (编辑框1.内容) LSL = 到数值 (编辑框2.内容) 小数位数 = 到整数 (编辑框4.内容) .如果真 (USL ≤ LSL)     信息框 (“最大值必须大于最小值!”, 0, “错误”, )     返回 () .如果真结束  .如果真 (小数位数 < 0 或 小数位数 > 10)     小数位数 = 2  ' 设置默认值 .如果真结束  ' 【2. 计算目标均值和标准差】 中心值 = (USL + LSL) ÷ 2 目标Cpk = 1.85  ' 设置在1.8-1.9之间 标准差 = (USL - LSL) ÷ (6 × 目标Cpk)  ' 【3. 生成随机数并存储到数组】 置随机数种子 ()  ' 初始化随机数生成器 .计次循环首 (125, i)     u1 = 取随机数 (1, 10000) ÷ 10000     u2 = 取随机数 (1, 10000) ÷ 10000     ' 使用Box-Muller变换生成标准正态分布随机数     z = 求平方根 (-2 × 求自然对数 (u1)) × 求余弦 (2 × 3.141592653589 × u2)     临时数值 = 中心值 + 标准差 × z     生成数值数组 [i] = 临时数值  ' 存储到程序集数组 .计次循环尾 ()  ' 【4. 为编辑框3构建竖向文本(每行一个数字)】 结果文本 = “” .计次循环首 (125, i)     .如果真 (小数位数 = 0)         结果文本 = 结果文本 + 到文本 (到整数 (生成数值数组 [i])) + #换行符     .如果真结束     .如果真 (小数位数 > 0)         结果文本 = 结果文本 + 数值到格式文本 (生成数值数组 [i], 小数位数, 假) + #换行符     .如果真结束  .计次循环尾 () 编辑框3.内容 = 结果文本
回复

使用道具 举报

结帖率:0% (0/2)
发表于 2025-10-30 13:11:21 | 显示全部楼层   浙江省宁波市
.版本 2

.子程序 _按钮1_被单击, , , ‘最终版的
.局部变量 USL, 双精度小数型
.局部变量 LSL, 双精度小数型
.局部变量 中心值, 双精度小数型
.局部变量 标准差, 双精度小数型
.局部变量 i, 整数型
.局部变量 u1, 双精度小数型
.局部变量 u2, 双精度小数型
.局部变量 z, 双精度小数型
.局部变量 临时数值, 双精度小数型
.局部变量 结果文本, 文本型
.局部变量 小数位数, 整数型
.局部变量 目标Cpk, 双精度小数型
.局部变量 行, 整数型
.局部变量 列, 整数型
.局部变量 索引, 整数型
.局部变量 数值文本, 文本型
.局部变量 结果文本5, 文本型

' 【1. 获取输入并验证】
USL = 到数值 (编辑框1.内容)
LSL = 到数值 (编辑框2.内容)
小数位数 = 到整数 (编辑框4.内容)
.如果真 (USL ≤ LSL)
    信息框 (“最大值必须大于最小值!”, 0, “错误”, )
    返回 ()
.如果真结束

.如果真 (小数位数 < 0 或 小数位数 > 10)
    小数位数 = 2  ' 设置默认值
.如果真结束

' 【2. 计算目标均值和标准差】
中心值 = (USL + LSL) ÷ 2
目标Cpk = 1.85  ' 设置在1.8-1.9之间
标准差 = (USL - LSL) ÷ (6 × 目标Cpk)

' 【3. 生成随机数并存储到数组】
置随机数种子 ()  ' 初始化随机数生成器
.计次循环首 (125, i)
    u1 = 取随机数 (1, 10000) ÷ 10000
    u2 = 取随机数 (1, 10000) ÷ 10000
    ' 使用Box-Muller变换生成标准正态分布随机数
    z = 求平方根 (-2 × 求自然对数 (u1)) × 求余弦 (2 × 3.141592653589 × u2)
    临时数值 = 中心值 + 标准差 × z
    生成数值数组 [i] = 临时数值  ' 存储到程序集数组
.计次循环尾 ()

' 【4. 为编辑框3构建竖向文本(每行一个数字)】
结果文本 = “”
.计次循环首 (125, i)
    .如果真 (小数位数 = 0)
        结果文本 = 结果文本 + 到文本 (到整数 (生成数值数组 [i])) + #换行符
    .如果真结束
    .如果真 (小数位数 > 0)
        结果文本 = 结果文本 + 数值到格式文本 (生成数值数组 [i], 小数位数, 假) + #换行符
    .如果真结束

.计次循环尾 ()
编辑框3.内容 = 结果文本  可以参考一下
回复

使用道具 举报

结帖率:96% (26/27)

签到天数: 9 天

发表于 2025-10-30 14:43:05 | 显示全部楼层   贵州省遵义市
  
窗口程序集名保 留  保 留备 注
窗口程序集_窗口1   
变量名类 型数组备 注
计数整数型  

子程序名返回值类型公开备 注
_窗口1_创建完毕  
启动线程 (&生成排列组合, , )
子程序名返回值类型公开备 注
生成排列组合  
变量名类 型静态数组备 注
输入数组文本型0
数组大小整数型 
开始时间长整数型 
结束时间长整数型 
开始时间 = 系统_取启动时间 ()
输入数组 = { “A”, “B”, “C”, “D”, “E”, “F”, “G”, “H”, “I”, “J”, “K” }
数组大小 = 取数组下标 (输入数组, )
排列组合 (输入数组, 0, 数组大小 - 1)
结束时间 = 系统_取启动时间 () - 开始时间
调试输出 (“总排列数:”, 计数, “用时:”, 结束时间 ÷ 1000)
子程序名返回值类型公开备 注
排列组合  
参数名类 型参考可空数组备 注
数组文本型
开始位置整数型
结束位置整数型
变量名类 型静态数组备 注
i整数型 
如果真 (开始位置 = 结束位置)
计数 = 计数 + 1
返回 ()

计次循环首 (结束位置 - 开始位置 + 1, i)
交换元素 (数组, 开始位置, 开始位置 + i - 1)
排列组合 (数组, 开始位置 + 1, 结束位置)
交换元素 (数组, 开始位置, 开始位置 + i - 1)
计次循环尾 ()
子程序名返回值类型公开备 注
交换元素  
参数名类 型参考可空数组备 注
数组文本型
i整数型
j整数型
变量名类 型静态数组备 注
临时文本型 
临时 = 数组 [i + 1]
数组 [i + 1] = 数组 [j + 1]
数组 [j + 1] = 临时


i支持库列表   支持库注释   
EThread多线程支持库
spec特殊功能支持库


[14:37:56] * 开始运行被调试程序
[14:39:55] * “总排列数:” | 39916800 | “用时:” | 118.295000

数组越多时间越长,递归算法的瓶颈在于算法复杂度(O(n!))而非语言执行效率
如果需要处理大量数据,建议:
a) 使用C++等高性能语言重写
b) 采用并行计算(多线程/GPU)
c) 使用专门的组合数学库
回复

使用道具 举报

结帖率:0% (0/3)

签到天数: 9 天

发表于 2025-10-30 20:02:19 | 显示全部楼层   四川省广安市
直接调用js吧
回复

使用道具 举报

结帖率:97% (28/29)

签到天数: 9 天

发表于 2025-10-30 20:34:52 | 显示全部楼层   广东省惠州市
https://bbs.ijingyi.com/thread-14865949-1-1.html
试下这个编译为64位软件,看下会蹦不?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

关闭

精易论坛 - 有你更精彩上一条 /2 下一条

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表