ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 天地一相

[已解决] 写出从7个元素中任取N个的全部可能

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-6-30 15:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
今铭昔 发表于 2024-6-28 14:22
1楼的二进制解法挺有意思的,瞟到了

image.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-6-30 19:41 | 显示全部楼层
本帖最后由 今铭昔 于 2024-6-30 19:43 编辑

这里的groups.push(nums[k])我写错了,应该是nums【i】才对。关于判断长度3的那个,我想不出有什么位运算可以搞定,只能想到用循环的方式

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-7-1 09:07 来自手机 | 显示全部楼层
一招秒杀 发表于 2024-6-28 07:06
实在太长太复杂了,看着真让人头大脑壳疼,全新4代语言,简简单单1句4行,完美解决。

感谢分享

select * from 求指定范围组合 limit 20;
with recursive D as (
select f01 E,f01 Y,rowid old_rowid,1 level from 求指定范围组合  union all select E||'+'||f01,f01, 求指定范围组合.rowid,D.level+1 from 求指定范围组合,D where (D.level+1)<39 and instr(E,f01)=0 order by level)
select * from D where level>1;
Screenshot_2024-07-01-09-00-56-887_com.mmbox.xbrowser.pro.jpg

TA的精华主题

TA的得分主题

发表于 2024-7-1 09:10 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
sdytsxd991122 发表于 2024-6-30 15:58

3位排列
with recursive D as (
select f01 E,f01 Y,rowid old_rowid,1 level from 求指定范围组合  union all select E||'+'||f01,f01, 求指定范围组合.rowid,D.level+1 from 求指定范围组合,D where (D.level+1)<39 and instr(E,f01)=0 order by level)
select * from D where level=3;
Screenshot_2024-07-01-09-08-25-372_com.mmbox.xbrowser.pro.jpg

TA的精华主题

TA的得分主题

发表于 2024-7-1 14:57 | 显示全部楼层
排列组合用二进制确实是个好办法,方便快捷。
学了一招。
360截图20240701144346608.jpg

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-7-1 15:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
grf1973 发表于 2024-7-1 14:57
排列组合用二进制确实是个好办法,方便快捷。
学了一招。

用字符串连接再判断长度好像有点问题,假如排的不是个位数【111, 112, 333, 12, 11 3, 33】

TA的精华主题

TA的得分主题

发表于 2024-7-1 16:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
sdytsxd991122 发表于 2024-7-1 15:26
用字符串连接再判断长度好像有点问题,假如排的不是个位数【111, 112, 333, 12, 11 3, 33】

对的,可以用判断二进制里面“1”的个数代替

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-1 19:02 | 显示全部楼层
本帖最后由 天地一相 于 2024-7-1 19:40 编辑
grf1973 发表于 2024-7-1 14:57
排列组合用二进制确实是个好办法,方便快捷。
学了一招。

谢谢,我也学了下。请看我仿写的代码,我的问题是,如何让输出的内容井然有序呢。从1位的开始一直依次到7位的。冒泡?
代码.PNG

TA的精华主题

TA的得分主题

发表于 2024-7-1 22:17 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
输出后排序最简单

TA的精华主题

TA的得分主题

发表于 2024-7-2 09:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
用js做了一个,加上了排序。
360截图20240702092404303.jpg

评分

1

查看全部评分

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

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 23:53 , Processed in 0.046086 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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