TC官方合作论坛

标题: 组合不重复 [打印本页]

作者: cjxdn    时间: 2016-2-25 11:01
标题: 组合不重复
etupadgkcb

有限的字母中, 组合出3个不重复字母, 组合到不能组合为止
如:
有限的字母中etu
开始组合:
eut
teu
tue
uet
ute
作者: mqzjy    时间: 2016-2-25 11:28
这属于排列组合问题
作者: 个人神话    时间: 2016-2-25 12:01
我试试写了一下,还是能实现的,就是根据值的长度,然后取的个数(如3个),匹配后结果总共有多少个,这个公式忘记了,原谅我数学没学好。
作者: 言术    时间: 2016-2-25 15:28

功能 按钮0_点击()
    变量 结果=数组()
    结果=组合不重复("etu")
   
    变量 大小=数组大小(结果)
    遍历(变量 i = 0; i < 大小; i++)
        调试输出(结果[i])
    结束
结束
功能 组合不重复(字符串)
    变量 临时,大小,标记=真,返回数组=数组()
    变量 字符串数组=数组()
    变量 长度=字符串长度(字符串)
    遍历(变量 i = 0; i < 长度; i++)
        字符串数组[i]=字符串截取(字符串,i,i+1)
    结束
   
    遍历(变量 i = 0; i < 长度; i++)
        遍历(变量 j = 0; j < 长度; j++)
            遍历(变量 k = 0; k < 长度; k++)
                临时=临时&字符串数组[k]
            结束
            大小=数组大小(返回数组)
            遍历(变量 l = 0; l < 大小; l++)
                如果(返回数组[l]==临时)
                    标记=假
                结束
            结束
            如果(标记)
                返回数组[大小]=临时
            结束
            临时=字符串数组[i]
            字符串数组[i]=字符串数组[j]
            字符串数组[j]=临时
            标记=真
            临时=""
        结束
    结束
   
    返回 返回数组
结束

作者: cjxdn    时间: 2016-2-25 15:36
言术 发表于 2016-2-25 15:28
功能 按钮0_点击()
    变量 结果=数组()
    结果=组合不重复("etu")

输出>>"etu"        
输出>>"teu"      
输出>>"uet"      
输出>>"eut"        
输出>>"ute"

少1个tue啊
作者: cjxdn    时间: 2016-2-25 15:47
言术 发表于 2016-2-25 15:28
功能 按钮0_点击()
    变量 结果=数组()
    结果=组合不重复("etu")

结果=组合不重复("etupadgkcb")
试了一下结果超过3个字母组合了

作者: 言术    时间: 2016-2-25 16:03
cjxdn 发表于 2016-2-25 15:47
结果=组合不重复("etupadgkcb")
试了一下结果超过3个字母组合了

几个字母组合都可以,至于你说少一个,我没注意,看差不多就发上来了,现在我又套了层遍历,也算交差了,你可以自己慢慢优化。
作者: 言术    时间: 2016-2-25 16:16
两层对于长字符串有时遍历不完全,牺牲点效率吧
遍历(变量 a = 0; a < 长度; a++)


作者: ngswc    时间: 2016-2-25 23:35

作者: jodon27    时间: 2016-3-2 08:47
学习一下!!
作者: jodon27    时间: 2016-3-2 08:47
学习一下!!
作者: jodon27    时间: 2016-3-2 08:47
学习一下!!
作者: jodon27    时间: 2016-3-2 08:47
学习一下!!
作者: jodon27    时间: 2016-3-2 08:48
学习一下!!




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1