如何得到指定数字中任意几个数字的组合
2011-04-11 17:23
162 查看
比如1,2,3,4,5,6这六个数字,我想得到它任意5个数字的组合或任意4个数字的组合,该如何得到?
使用递归,函数主体如下(il_count为实例变量,仅用于统计,可以不要), mle_1用于输出结果
调用方法如下:
使用递归,函数主体如下(il_count为实例变量,仅用于统计,可以不要), mle_1用于输出结果
//==================================================================== // 函数: w.wf_digui() //-------------------------------------------------------------------- // 描述:递归输出符合条件的组合 //-------------------------------------------------------------------- // 参数: // value long al[] //用来取组合的数组,如:{1,2,3,4,5,6} // value string as //截止到目前为止,已经组合的数字串, 如:123 // value long al_start //从“用来取组合的数组”的第几位开始取,如:为2时,表示从{1,2,3,4,5,6}的2开始 // value long al_num //从“用来取组合的数组”中取几个数字,如:为2时,表示从{1,2,3,4,5,6}中取两个数字 //-------------------------------------------------------------------- // 返回: (None) //-------------------------------------------------------------------- //==================================================================== long ll[], i,j, k long ll_deal string ls //要取的个数为0,则返回 if al_num = 0 then return //从开始为止al_start开始循环直到“用来取组合的数组”的最后一个数字 for j = al_start to upperbound(al) //在循环中取1个数字,并将该数字添加到“已经组合的数字串”的后面 ls = as + string(al[j]) if al_num = 1 then //如果本次只需要再取1个数字,则取数字完毕,输出结果(il_count仅用于统计输出的数目,可以不要) il_count ++ if mle_1.text <> '' then mle_1.text += '~r~n' mle_1.text += string(il_count) + '~t:' + ls else //如果本次需要取的数字超过1个,则在取得1个数字后,将取数起始位置 + 1,取数个数 -1, 然后递归往下取 //j已经循环到底了,这时候还没达到规定的个数,则返回,表示取不了了 if j = upperbound(al) then exit wf_digui( al, ls, j + 1, al_num - 1) end if next
调用方法如下:
il_count = 0 //参数1:{1,2,3,4,5,6}为“用来取组合的数组” //参数2:取出来的数字串的前缀 //参数3:从“用来取组合的数组”的第N个数字开始取 //参数4:需要取几个数字 wf_digui({1,2,3,4,5,6}, '啊', 1, 3)
相关文章推荐
- 如何得到指定数字中任意几个数字的组合
- 如何将几个数字进行搭配相加,得出指定区间的组合
- 用几个数字任意组合成最大数
- 如何计算出指定数字列表的组合数及组合明细
- 【Java中 任意几个数字获取其所有的排列组合】
- 从数字列表中,任意三个相加为指定值的所有组合
- 【Java中 任意几个数字获取其所有的排列组合】
- Oracle中如何判断字符串是否全为数字,以及从任意字符串中提取数字
- 如何产生一个八位任意码?并且0也可以作为开始的数字
- mysql字符串如何得到指定字符最后的位置,学习SUBSTRING_INDEX的用法
- 一个简单的算法 - 将一个正整数拆分成指定几个正整数的组合
- 如何取出DataTable中某几个字段(列名)组合新表
- 小练习1:如何将一个纯数字字符串升序,得到一个新字符串
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3
- 计算数组中的任意个数字的和为某一个值的组合
- php如何判断字符串是否是字母和数字的组合
- 数字黑洞:任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到 * 一个最大的数:65432,一个最小的数23456。
- 题目,得到某个数组,比如【1,2,3】 获得其全部的排列组合,包括1个数字的。2个数字的,和三个数字的等等
- 小易邀请你玩一个数字游戏,小易给你一系列的整数。你们俩使用这些整数玩游戏。每次小易会任意说一个数字出来,然后你需要从这一系列数字中选取一部分出来让它们的和等于小易所说的数字。 例如: 如果{2,1,2,7}是你有的一系列数,小易说的数字是11.你可以得到方案2+2+7 = 11.如果顽皮的小易想坑你,他说的数字是6,那么你没有办法拼凑出和为6 现在小易给你n个数,让你找出无法从n个数中选取部分求和
- 如何得到指定表的各种属性信息如下: