排列组合:01转换法之lua实现
c++ 版连接 https://blog.csdn.net/canguanxihu/article/details/46363375
因为项目用的是lua脚本,看了C++版后自己写了一个lua版本的,原理在c++连接里面博主已经介绍了,我也不重复描述了,直接把代码贴出来
 local NewLogic = class("NewLogic")
 local handCardCount = 
 --随机生成扑克用于测试
 function NewLogic:randomMakeCards()
     math.randomseed(os.time())
     local cards = {}
     repeat
         local card = math.random()
         if not table.indexof(cards,card) then
             table.insert(cards,card)
         end
     until(#cards == handCardCount)
     return cards
 end
 -- o 1 转换排列组合法
 function NewLogic:combination(cards,cbntNumber)
     if cbntNumber > #cards then
         return nil
     end
     local assistArray = {}
     for i = ,#cards do
         if i <= cbntNumber then
             assistArray[i] =
         else
             assistArray[i] =
         end
     end
     local cbntResult = {}
     local function getResult(astArray,srcArray,cbntResult)
         local oneOfCombination = {}
         for k,v in ipairs(astArray) do
             if v ==  then
                 table.insert(oneOfCombination,srcArray[k])
             end
         end
         table.insert(cbntResult,oneOfCombination)
     end
     getResult(assistArray,cards,cbntResult)
     local idx =
     while true do
         if assistArray[idx + ] == nil then
             break
         end
         if assistArray[idx] ==  and assistArray[idx + ] ==  then
             assistArray[idx] =
             assistArray[idx + ] = 1
             for i =  , idx - do
                 for j = i + , idx do
                     if assistArray[i] < assistArray[j] then
                         local mid = assistArray[i]
                         assistArray[i] = assistArray[j]
                         assistArray[j] = mid
                     end
                 end
             end
         getResult(assistArray,cards,cbntResult)
             idx =
         else
             idx = idx +
         end
     end
     return cbntResult
 end
 return NewLogic
排列组合:01转换法之lua实现的更多相关文章
- UVa Problem 10132 File Fragmentation (文件还原) 排列组合+暴力
		题目说每个相同文件(01串)都被撕裂成两部分,要求拼凑成原来的样子,如果有多种可能输出一种. 我标题写着排列组合,其实不是什么高深的数学题,只要把最长的那几个和最短的那几个凑一起,然后去用其他几个验证 ... 
- 蓝桥杯   问题  1110:   2^k进制数    (排列组合+高精度巧妙处理)
		题目链接 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换为2 ... 
- 学习sql中的排列组合,在园子里搜着看于是。。。
		学习sql中的排列组合,在园子里搜着看,看到篇文章,于是自己(新手)用了最最原始的sql去写出来: --需求----B, C, F, M and S住在一座房子的不同楼层.--B 不住顶层.C 不住底 ... 
- .NET平台开源项目速览(11)KwCombinatorics排列组合使用案例(1)
		今年上半年,我在KwCombinatorics系列文章中,重点介绍了KwCombinatorics组件的使用情况,其实这个组件我5年前就开始用了,非常方便,麻雀虽小五脏俱全.所以一直非常喜欢,才写了几 ... 
- 【原创】开源.NET排列组合组件KwCombinatorics使用(三)——笛卡尔积组合
		本博客所有文章分类的总目录:本博客博文总目录-实时更新 本博客其他.NET开源项目文章目录:[目录]本博客其他.NET开源项目文章目录 KwCombinatorics组件文章目录: 1. ... 
- 【原创】开源.NET排列组合组件KwCombinatorics使用(二)——排列生成
		本博客所有文章分类的总目录:本博客博文总目录-实时更新 本博客其他.NET开源项目文章目录:[目录]本博客其他.NET开源项目文章目录 KwCombinatorics组件文章目录: 1. ... 
- 【原创】开源.NET排列组合组件KwCombinatorics使用(一)—组合生成
		本博客所有文章分类的总目录:本博客博文总目录-实时更新 本博客其他.NET开源项目文章目录:[目录]本博客其他.NET开源项目文章目录 KwCombinatorics组件文章目录: 1. ... 
- hdu1521 排列组合(指数型母函数)
		题意: 有n种物品,并且知道每种物品的数量ki.要求从中选出m件物品的排数. (全题文末) 知识点: 普通母函数 指数型母函数:(用来求解多重集的排列问题) n个元素,其中a1,a2, ... 
- [leetcode] 题型整理之排列组合
		一般用dfs来做 最简单的一种: 17. Letter Combinations of a Phone Number Given a digit string, return all possible ... 
随机推荐
- curl 模拟发起百度地图API post请求
			注:开始做的是get请求,比较简单,然后又查询了一番就做成了post请求,有几个地方特别说明一下: 一,$address,是必须传的,$city可不传: 二,ak跟之前的key一直,需要申请,我的好像 ... 
- js中的正则表达式的运用
			正则表达式是一个拆分字符串并查询相关信息的过程:是现代开发中很重要的一环.作为一个web开发人员必须牢牢掌握这项技能,才能尽情得在js中驰骋. 1.创建正则表达式: 正则表达式(regular exp ... 
- android 获取http请求json数据
			package com.my.gethttpjsondata; import java.io.BufferedReader;import java.io.ByteArrayOutputStream;i ... 
- Django——REST framework
			1. 什么是REST REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角度类审 ... 
- Node.js学习(篇章一)
			<node.js的特点> 采用了异步式I/O与事件驱动的架构设计,架构为单线程模型. <supervisor包的作用> node.js开发项目,当修改项目时,需要终止进程重启N ... 
- Android8.0适配那点事(二)
			小伙伴们,咱们今天咱继续对Android8.0的适配进行分解,今天将针对启动页,版本适配和系统限制等进行“啃食” 猛戳这里查看Android8.0适配那点事(一): 1.启动页适配 近日,我无意中发现 ... 
- Scratch www 系统搭建
			原文地址:https://blog.csdn.net/litianquan/article/details/82735809 Scratch www要基于Nodejs的环境才可以运行,我尝试了在Win ... 
- SQL捕捉blocking信息
			场景: 客户抱怨数据库慢,但是回去看的时候,可能已经不慢了,为了查出当时到底是什么原因导致数据慢,制作了下面的存储过程,然后每隔3分钟运行一遍,把blocking信息插入一个数据库中. 主要就是查询s ... 
- MVC controller的Action获取HttpRequest
			HttpContext.ApplicationInstance.Context.Request 
- August 24th 2017 Week 34th Thursday
			If you have choices, choose the best. If you have no choice, do the best. 如果有选择,那就选择最好的:如果没有选择,那就努力做 ... 
