这是菜鸟学Python的第61篇原创文章 阅读本文大概需要5分钟 最近对算法很有兴趣,算法是程序的灵魂,对于普通的程序,学会一些基本的招式,背熟了常见的API的用法,也就可以应付一般的问题,但是对于复杂的问题的处理,要想成为高手,一定要对算法深入了解,算法其实很有意思,大体分链表,队列,栈,树和图的运用,前段时间看到一个微软的面试题,讲的是24点游戏,于是拿来练手,破解一下,很有意思,跟大家分享一下 1 24点游戏的简介 1.24点游戏是老少皆宜的游戏,玩法很简单 1).给玩家4张牌,每张牌面值1-13之间,允许有相同的牌, 2).采用加,减,乘,除四则运算 3).允许有小数 4),可以用括号,但每张牌只能使用一次 输入:11,8,3,5 输出:(11-8)*(3 5)=24 或者难一点的: 输入:1,7,8,3 输出:3/(1-(7/8)) =24 2 问题初步分析 2.最简单的就是采取暴力破解,穷举法 1).先不考虑括号,因为每个数字只能用一次,对4个数字全排列:4!=4*3*2*1=24 2).运算符[' ','-','*','/']可以选3个,同一个运算符又可以重复出现,对于每一种排列,总共可以有 4*4*4=64 这样的话,就会有64*24=1536种 3).接下来考虑括号,对于4个数字而言,括号插入有两种
(11-8)*3 5 (11-8*3) 5 11-(8*3) 5
(11-(8*3)) 5 11-((8*3) 5) 这样的话会有5种,最后有1536*5=7680种 3 算法的初步构思 3.网上对于24点游戏,破解的算法,大多都是降维
有没有什么Python特色的算法呢,我昨天晚上苦苦思索一下,发现Python里面有一个特殊的函数,可以天然的处理这个问题,非常方便.我们来看一下到底怎么破~~ Python里面有个函数叫eval,这个函数可以计算表达式: 假如我们有一个字符串s1,是一个表达式 s1='1 2 3 4' print eval(s1) |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|