本文主要是介绍欧拉计划第868题:Belfry铃声排列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
欧拉计划第868题的题目描述:
有一种Bell铃手用来生成所有铃铛响声顺序变化的方法。
同样的方法也可以用来创建一组字母的所有排列。初始时,将字母从小到大排列。在每一步中,将最大的字母与其左边或右边的字母交换,以生成一个未出现过的排列。如果两种交换方式都没有生成出新排列,则尝试下一个最大的字母,依此类推。如果持续这个过程,可以生成所有的排列。
例如,从ABC开始时,需要3次交换才能得到排列CBA,交换过程是:ABC、ACB、CAB、CBA。
同样地,从按字母顺序排列的这些字母开始,需要59次交换才能得到 BELFRY。
求从按字母顺序排列的这些字母开始,达到 NOWPICKBELFRYMATHS 需要多少次交换?
第一步,先生成4个字母的所有排列
根据题意,直接写出代码,每次找到最大的字母,尝试交换,生成一个新的排列;再找次大的字母,直到生成一个新的排列……
def bell_swap(s):for ch in
这篇关于欧拉计划第868题:Belfry铃声排列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!