3mile 发表于 2010-6-3 11:08:26

凑数字问题

本帖最后由 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”,有兴趣的试试。

afan 发表于 2010-6-3 12:00:39

有点意思~
**** Hidden Message *****

Joo 发表于 2010-6-3 12:25:35

看看。。。

3mile 发表于 2010-6-3 17:36:37

为了不影响大家的思维,设置了回复可见。
办法极笨,抛砖引玉。
**** Hidden Message *****

C.L 发表于 2010-6-4 08:13:08

这个题目可以有不少的算法,我也写个算法
#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

3mile 发表于 2010-6-4 09:14:33

回复 5# C.L
用11223344算算。

C.L 发表于 2010-6-4 13:24:05

回复 6# 3mile

我5楼的算法只适用于112233
11223344的算法,看了你的算法,用_arrayPermute()来排列,很不错的思路,我没想到更好的算法~~,以后有空再想想,多了一组数字,组合多了XX倍

3mile 发表于 2010-6-4 14:28:45

回复 7# C.L
你太谦虚了。


同意你的看法,只多一组数就多了N位排列方法。并且我的想法极笨,目前也没有效率高点的算法。
。。。
继续期待高手出现。
页: [1]
查看完整版本: 凑数字问题