找回密码
 加入
搜索
查看: 4106|回复: 7

[效率算法] 凑数字问题

  [复制链接]
发表于 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”,有兴趣的试试。
发表于 2010-6-3 12:00:39 | 显示全部楼层
有点意思~
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1金钱 +30 收起 理由
3mile + 30 学习了

查看全部评分

发表于 2010-6-3 12:25:35 | 显示全部楼层
看看。。。
 楼主| 发表于 2010-6-3 17:36:37 | 显示全部楼层
为了不影响大家的思维,设置了回复可见。
办法极笨,抛砖引玉。
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2010-6-4 08:13:08 | 显示全部楼层
这个题目可以有不少的算法,我也写个算法
#include <array.au3>
Dim $source[3]=[1,2,3], $result[6],$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

评分

参与人数 2金钱 +40 收起 理由
afan + 20
3mile + 20 学习了

查看全部评分

 楼主| 发表于 2010-6-4 09:14:33 | 显示全部楼层
回复 5# C.L
用11223344算算。
发表于 2010-6-4 13:24:05 | 显示全部楼层
回复 6# 3mile

我5楼的算法只适用于112233
11223344的算法,看了你的算法,用_arrayPermute()来排列,很不错的思路,我没想到更好的算法~~,以后有空再想想,多了一组数字,组合多了XX倍
 楼主| 发表于 2010-6-4 14:28:45 | 显示全部楼层
回复 7# C.L
你太谦虚了。


同意你的看法,只多一组数就多了N位排列方法。并且我的想法极笨,目前也没有效率高点的算法。
。。。
继续期待高手出现。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-16 10:13 , Processed in 0.082252 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表