lua实现全排列和组合排列
来源:互联网 发布:ubuntu docker 编辑:程序博客网 时间:2024/05/21 19:21
--组合排列function sub(head,index,r,k,a) for i=head,#a+index-k do if(index<k) then r[index ] = a[i]; sub(i + 1, index + 1, r, k,a); elseif (index == k) then r[index ] = a[i]; --local t="" --t = table.concat(r) --TracePrint(t,#t) //全排列和组合排列一起使用 fullPermutation(r) end end end function fullsub(t,start,end1,r) r = {} start =start or 1 end1 = end1 or #t for tmpi=start, end1 do sub(1,1,r,tmpi,t) endend--以下为全排列function IsSwap (fullArray, start,end1)--这个还未理解 for tmpi=start,end1-1 do if fullArray[tmpi] == fullArray[end1] then return false end end return trueendfunction fullPermutation(fullArray, start,end1) assert(type(fullArray) == "table", "参数类型错误") start = start or 1 end1 =end1 or #fullArray local ret ="" --出口 if start >= end1 then for tmpii=1,#fullArray do ret = ret .. fullArray[tmpii] end TracePrint(ret) return end --else for tmpi=start,end1 do -- 交换得到新的排列 --去除重复数字 if IsSwap (fullArray, start,tmpi) then fullArray[tmpi] ,fullArray[start]=fullArray[start],fullArray[tmpi] --swap(fullArray,start,tmpi) --递归 fullPermutation(fullArray, start+1,end1) --还原至最初的排列 fullArray[tmpi] ,fullArray[start]=fullArray[start],fullArray[tmpi] --end end end --endend--测试代码a={4,5,6}fullsub(a)
0 0
- lua实现全排列和组合排列
- 排列、组合和全排列
- 全排列和全组合实现
- 全排列和全组合实现
- 全排列和全组合实现
- 全排列和全组合实现
- 全排列和全组合实现
- lua实现全排列
- 全排列和组合
- 组合和全排列
- 递归实现全排列和组合
- 全排列和组合的实现算法
- c 语言实现全排列和组合
- 全排列和组合的实现
- 全排列和组合-JAVA版本实现
- 全排列和组合的实现算法
- java实现全排列和组合
- 全排列和全组合
- linux下的fcntl()函数
- LeetCode137 Single Number II
- React-JSX详解
- 对过拟合的处理:正则化方法:L1和L2 regularization、数据集扩增、dropout
- android开发-Listview中显示不同的视图布局
- lua实现全排列和组合排列
- Jedis源码解析(Pipeline的实现)
- iOS tableview headview
- CSU 1681 Adjoin(树形dp && 树的直径)
- CentOS7.1 Liberty云平台之Networking篇(6)
- linux 下的 动态库加载函数总结
- React—组件生命周期详解
- 深入浅出JBoss Seam
- ARM Linux 3.x的设备树(Device Tree)