演示:
http://nowgoo.dosin.net/24.htm
我不是信工院的,没学过数据结构,所以不晓得什么是栈也不晓得什么是波兰表达式
我只是一个做网页的(高手看不起就算了),学了点JS,看到论坛上有人在问24点的问题,就花点时间写了个JS版的24点程序
实在想不出什么高明的算法,其实我JS也是菜鸟,就晓得用循环和数组,弄了一个多小时,还是把它给整出来了
基本思路:算出24,无非两种途径:
1、先两两运算,再把两个数进行运算
2、累积运算
我稍微扩展了一下“运算”的概念,即在加、减、乘、除的基础上添加“被减”和“被除”(地球人都知道“被加”和“被乘”对结果没有影响):
function f(Num1,Num2,Flag){
switch (Flag){
case 0:return (Num1+Num2);
case 1:return (Num1-Num2);
case 2:return (Num1*Num2);
case 3:return (Num1/Num2);
case 4:return (Num2-Num1);
case 5:return (Num2/Num1);
}
}
呵呵,这样一来就可以全部用循环搞定了:
首先,判断文本框中的数据是否合法;
如果不合法,则给出提示,退出;如果合法,把四个数字存到数组InputArr;
然后嘛,计算这四个数的排列,存入字符串ArrStr中——我说了我不晓得什么入栈出栈,直接存入数组的话不
好判断是否有重复元素
最后就是分两种情况计算了,很简单吧~~:P