排列组合——分组
创作者俱乐部成员
再来一个"简单"的问题:12个人,每4人一组,分成3组,列出所有不重复的分组。。。
高中数学痛击我.jpg
"显然"😂共有,C(12,4)*C(8,4)/P(3,3)=5775组不重复的分组
论坛里曾经分享过,https://bbs.wps.cn/topic/15559,JS宏里可用的排列组合库,但要写出通用性强一点的方法还是比较困难。。。
那不如再介绍一个加载项,xloil,如果你用过excel里的xlwings,那么xloil就是wps可用的、更快速、扩展性更好的xlwings,装上它,不仅可以像上一个帖子里那样方便的在公式栏写SQL,更可以简单写一个py脚本,里面的方法就会变成wps里可用的公式
👋 | import xloil as xlo from itertools import combinations def rec(arr, n): if len(arr) <= n: return [[','.join(arr)]] ret = [] for i in combinations(arr, n): if i[0] == arr[0]: for j in rec([k for k in arr if k not in i], n): ret.append([','.join(i)] + j) return ret @xlo.func def fz(x, y): return rec([str(i) for i in range(1, int(x) + 1)], int(y)) |
感谢python里的itertools库,提供了方便快速的排列组合方法,让我不用递归里面嵌套递归。。。
其实,回顾写过的帖子,总的思路就是——偷懒,哈哈,怎么简单怎么写,能偷懒就偷懒😁
用py的好处也是这样,ai回答的py代码正确率最高,毕竟人气最高
创作者俱乐部成员