问题:
玛雅密码是一串由0、1、2组成的密码,这串数字中如果包含2012,就可以解开末日的大门。给定一串由0、1、2组成的字符串,只有相邻的数字可以交换,求通过最少多少次变换可以得到玛雅密码,并给出这串密码。
思路:
经过很久很久的尝试,放弃了一次性拼凑2012的想法,改用预处理得到所有数字范围中符合玛雅密码的部分,再递归遍历给定的数字串,得到该串所有可能的变换,并比较每个变换的结果需要的步数。
import sys def find_all_transfers(str): result={} if len(str) == 0: result[str] = 0 for index in range(0, len(str)): first=str[index] next_str=str[0:index] + str[index+1:len(str)] next_result=find_all_transfers(next_str) #print("next_result is: ") #print(next_result) for key in next_result: steps = index+next_result[key] if first+key not in result or steps < result[first+key]: result[first+key] = steps return result def build_map(): map={} for i in range(0, 3**13-1): if check_2012(i): map[i] = True return map def check_2012(number): while number >= 59: if number%81 == 59: return True number /= 3 return False def from_3_to_10(str): count=0 iterator = range(0, len(str)) for i in iterator: count+=int(str[-i-1])*(3**i) return count map = build_map() #print(map) str=raw_input("input string from 0,1,2: ") print("str is %s"%str) result = find_all_transfers(str) #print(result) min = sys.maxint min_key = "" for key in result: number = from_3_to_10(key) #print("value of %s is %d"%(key, number)) if check_2012(number): #print("min is %d"%min) #print("result[key] is %d"%result[key]) if min > result[key]: min = result[key] min_key = key print("min steps is %d, final string is %s"%(int(min), min_key))
相关推荐
玛雅自助导航系统 玛雅自助导航系统 玛雅自助导航系统
玛雅人物0模型,可直接调动画,适合初学动画的人调试动画用
玛雅四重奏驱动及说明书,版本v1.23,是中音的驱动不是maya44,请注意下!
玛雅44最新声卡驱动1.19
玛雅官网玛雅四重奏驱动下载地址,随时查看更新,需手动复制到浏览器打开,玛雅官网玛雅四重奏驱动下载地址,随时查看更新,需手动复制到浏览器打开
伯利兹(Belize)的午夜恐怖洞(Midnight Terror Cave)于2008年至2010年间进行了调查,结果发现了超过10,000块骨头的人体骨学组合,据报道,这是南部玛雅低地洞穴中最大的。 分析表明,大约四分之一的骨头属于亚...
玛雅期末作业源文件,用于交作业用,,玛雅期末作业源文件,用于交作业用,,玛雅期末作业源文件,用于交作业用,,
玛雅44驱动64位带注册,老东西了。需要的可以下载。。。。
玛雅校友录源代码························································
玛雅模型作业源文件玛雅模型作业源文件玛雅模型作业源文件玛雅模型作业源文件玛雅模型作业源文件玛雅模型作业源文件玛雅模型作业源文件
由于是使用的人不多,不太找的玛雅声卡驱动。
默认管理员帐号是:admin,密码:admin
此作品是玛雅的作品 ,希望对需要帮助的同学们有作用哦
最新声卡驱动
这是小汽车“甲壳虫”的详细结构模型,适合直接使用或者调动画,每个部件都是分开好了的。
驱动程序-声卡驱动-玛雅44声卡驱动 v1.31.zip
玛雅历法.pdf
挑战记忆力HTML5游戏源码,运行需要服务器环境,已经反复测试,放心使用。
22寸玛雅显示器正常备份