凑数字问题
本帖最后由 3mile 于 2010-6-3 17:38 编辑用数字1,1,2,2,3,3拼凑出一个六位数,使两个1之间有1个数字,两个2之间有2个数字,两个3之间有3个数字。
无限制编程解决。
再加点数字,如果是“1,1,2,2,3,3,4,4”呢?
自己没有测过“1,1,2,2,3,3,4,4,5,5”,有兴趣的试试。 有点意思~
**** Hidden Message ***** 看看。。。 为了不影响大家的思维,设置了回复可见。
办法极笨,抛砖引玉。
**** Hidden Message ***** 这个题目可以有不少的算法,我也写个算法
#include <array.au3>
Dim $source=, $result,$sResult=""
MsgBox (0,"",main ())
Func main()
For $i=0 To 1
For $k=0 To UBound ($source)-1
$temp = $source[$k]+1
If $temp >3 Then $temp -= 3
$source[$k]=$temp
$sec = $k+$temp+1
$result[$k]=$temp
$result[$sec]=$temp
Next
$sResult &= _ArrayToString ($result)&@CRLF
$sResult = StringReplace($sResult,"|","")
Next
Return $sResult
EndFunc 回复 5# C.L
用11223344算算。 回复 6# 3mile
我5楼的算法只适用于112233
11223344的算法,看了你的算法,用_arrayPermute()来排列,很不错的思路,我没想到更好的算法~~,以后有空再想想,多了一组数字,组合多了XX倍 回复 7# C.L
你太谦虚了。
同意你的看法,只多一组数就多了N位排列方法。并且我的想法极笨,目前也没有效率高点的算法。
。。。
继续期待高手出现。
页:
[1]