问题:
玛雅密码是一串由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))
相关推荐
在"maya.rar_asp导航_maya_玛雅_玛雅网站导航_玛雅视频导航"这个压缩包中,我们关注的核心是ASP技术在构建玛雅自助导航系统中的应用。 玛雅自助导航系统,正如其名,是一个以ASP技术为基础,为用户提供方便快捷的...
玛雅四重奏驱动是针对玛雅(Maya)这款3D建模、动画和视觉效果软件的重要组件,主要用于确保软件在特定硬件环境下能够高效、稳定地运行。玛雅是Autodesk公司推出的一款专业级软件,广泛应用于电影、电视、游戏制作等...
玛雅四重奏驱动及说明书是一份非常重要的资源,尤其对于使用玛雅四重奏音频设备的用户来说。这份文档包含的详细信息旨在帮助用户正确安装和使用玛雅四重奏的驱动程序,并理解设备的功能和操作方法。下面将详细阐述...
玛雅44最新声卡驱动1.19
玛雅44驱动是针对玛雅(Maya)这款专业3D动画、建模、模拟和渲染软件的一个关键组件,尤其对于64位操作系统而言。在3D创作领域,Maya因其强大的功能和广泛的应用范围而备受赞誉,被用于电影、电视、游戏开发等多个行业...
《玛雅同学录 v2.0 build 0203》是一款专为用户构建互动交流平台的软件,尤其适用于校友间的联系与沟通。这款软件的核心功能在于提供一个安全、便捷的环境,使得用户能够轻松地查找旧时同窗,分享生活点滴,以及参与...
玛雅人物0模型,可直接调动画,适合初学动画的人调试动画用
为了确保密码的安全性,建议用户选择复杂且难以猜测的组合,包含大写字母、小写字母、数字和特殊字符,并避免使用生日、电话号码等容易被他人获取的信息。 除了加密,玛雅加密王可能还具备其他辅助功能,例如文件...
玛雅校友录源代码是一款基于ASP(Active Server Pages)技术构建的校友信息系统,它主要用于连接和管理校友之间的联系,提供一个平台让校友们能够交流、分享信息和资源。ASP是微软开发的一种服务器端脚本环境,它...
玛雅声卡驱动是专为玛雅品牌音频设备设计的一款重要软件组件,它使得计算机能够识别和正确地与玛雅声卡硬件进行通信,从而确保音质清晰、稳定且功能全面。在描述中提到,这款驱动可能相对罕见,因为玛雅声卡在市场上...
【标题】"玛雅导航测试可用.rar"是一个压缩包文件,通常用于存储多个相关文件或文件夹,便于传输和保存。这里的"玛雅导航"很可能是一个网站或应用的导航系统,而"测试可用"则表明这是为了测试目的,可能是开发阶段的...
玛雅人使用的一点、一横、与一个代表零的贝形符号来表示数字,这些符号可以组合表示任何数字。这种数字系统与算盘的算珠有异曲同工之妙,类似的原理今天被应用在电脑的“二进位制”上。 玛雅历法非常复杂,包括以二...
伯利兹(Belize)的午夜恐怖洞(Midnight Terror Cave)于2008年至2010年间进行了调查,结果发现了超过10,000块骨头的人体骨学组合,据报道,这是南部玛雅低地洞穴中最大的。 分析表明,大约四分之一的骨头属于亚...
玛雅期末作业源文件,用于交作业用,,玛雅期末作业源文件,用于交作业用,,玛雅期末作业源文件,用于交作业用,,
玛雅模型作业源文件玛雅模型作业源文件玛雅模型作业源文件玛雅模型作业源文件玛雅模型作业源文件玛雅模型作业源文件玛雅模型作业源文件
玛雅44声卡驱动 v1.31是一款专为玛雅44声卡设计的驱动程序,旨在优化声卡的性能,确保音频输出的质量和稳定性。驱动程序在计算机硬件和操作系统之间起着桥梁的作用,它使操作系统能够识别并有效地控制硬件设备。在这...
此作品是玛雅的作品 ,希望对需要帮助的同学们有作用哦
【玛雅模型】是针对小汽车“甲壳虫”精心制作的一款三维结构模型,这款模型在IT行业中,特别是在3D建模、动画设计以及视觉效果领域具有广泛应用。它提供了汽车的每一个零部件的独立模型,方便用户进行直接使用或深度...
玛雅传奇HTML5游戏源码是一款基于HTML5技术开发的游戏,这种技术的广泛应用得益于其跨平台的特性,可以在多种设备上运行,包括桌面浏览器、移动设备浏览器甚至游戏平台。HTML5游戏源码是游戏开发的核心部分,包含了...