首页 > 试题广场 >

解密

[编程题]解密
  • 热度指数:3820 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
亮亮深吸一口气,小心地将盒子打开,里面是一张地图,地图上除了一些奇怪的字母以外没有任何路线信息,这可让亮亮犯了愁,这些字母代表了什么意思呢? 亮亮绞尽脑汁也想不出什么思路,突然,亮亮眼前一亮,“我可以把这些字母所有的排列方式全部写出来,一定可以找到答案!” 于是,亮亮兴奋的开始寻找字母里的秘密。

输入描述:
每组数据输入只有一行,是一个由不同的大写字母组成的字符串,已知字符串的长度在1到9之间,我们假设对于大写字母有'A' < 'B' < ... < 'Y' < 'Z'。


输出描述:
输出这个字符串的所有排列方式,每行一个排列,要求字母序比较小的排列在前面。
示例1

输入

WHL

输出

HLW<br/> HWL<br/> LHW<br/> LWH<br/> WHL<br/> WLH<br/>
全排列

class MainActivity:

    def main(self):
        # Read the data
        s = input()
        # Calculate
        results = self.__traverse(s)
        results.sort()
        for result in results:
            print(result)
    
    def __traverse(self, s):
        if len(s) == 1:
            return [s]
        results = set()
        for ptr, char in enumerate(s):
            tmpResults = self.__traverse(s[:ptr] + s[ptr + 1:])
            for result in tmpResults:
                results.add(char + result)
        return list(results)


if __name__ == '__main__':
    M = MainActivity()
    M.main()
发表于 2024-08-24 13:48:40 回复(0)