1-10中选4个,可重复的
解决方案 »
- 关于try catch finally,请详解
- "1".substring(1).length()
- Swing组件显示的问题
- java.lang.Process.exec(cmd)执行linux命令,程序如何与命令行交互?
- 其中en.nextElement()报错
- 请问(seconds - 15) / 60 * 2 * Math.PI;和2 * Math.PI*(seconds - 15) / 60有区别吗?
- 初学者第二步,几个JAVA文件的理解
- 帮组合一下..一次更新7万条记录的程序..
- 请教如何试用Method.invoke()传入整形的参数
- A try block must always be followed by a catch block ? 对么???
- 如何读取html文件
- 一道笔试题
全排列4个数字
a a a a
a a a b
a a a c ......
再
全排列4个运算符
...
都有4×4×4×4种排列
然后把他们隔位组合成一个字符串表达式
难点就是 表达式求值了方法比较笨了 呵呵
<%@ page contentType="text/html;charset=gbk" %>
<html>
<head>
<title>算24点程序</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head><tr><td align="center">
<form method="post" action="#" id="form1">
<input style="width:35" id="t1" name="t1">
<input style="width:35" id="t2" name="t2">
<input style="width:35" id="t3" name="t3">
<input style="width:35" id="t4" name="t4"><br>
<input style="width:115" id="t5" name="t5">
<input type=reset name="t6" value="清除">
</form>
<script language=javascript>
function fun1(e1,e2,e3,e4)
{
var i,j,k,a,b,c,d,t1,t2,t3;
var opx=["+","-","*","/","-","/"];
a=e1;b=e2;c=e3;d=e4;
for(i=0;;)
{
if(i>=4)break;
if(i==0)t1=a+b;
if(i==1)if(a-b>0)t1=a-b;
if(i==2)t1=a*b;
if(i==3)if(b!=0)t1=a/b;
for(j=0;;)
{
if(j>5)break;
if(j==0)t2=t1+c;
if(j==1)t2=t1-c;
if(j==2)t2=t1*c;
if(j==3)if(c!=0)t2=t1/c;
if(j==4)t2=c-t1;
if(j==5)if(t1!=0)t2=c/t1;
for(k=0;;k++)
{
if(k>5)break;
if(k==0)t3=t2+d;
if(k==1)t3=t2-d;
if(k==2)t3=t2*d;
if(k==3)if(d!=0)t3=t2/d;
if(k==4)t3=d-t2;
if(k==5)if(t2!=0)t2=d/t2;
if(t3==24)
{var str="";
var t="";
/*if(j>1||k>1)document.write ("(");
document.write (a+opx[i]+b);
if(j>1)document.write (")");
document.write (opx[j]+c);
if(j<2&&k>1)document.write (")");
document.write (opx[k]+d);
document.write ("=24<br>");*/ if((j>1||k>1)&&i<2)t="(";
if((j<2||j==4)&&k>1&&i>1)t="(";
str=str+a+opx[i]+b;
if(j>1&&i<2)str=str+")";
if(j<4)str=str+opx[j]+c;
else if(j>3&&i<2)str=c+opx[j]+"("+str+")";
else if(j==5&&i==3)str=c+opx[j]+"("+str+")";
else str=c+opx[j]+str;
if(j<2&&k>1&&i<2)str=str+")";
str=t+str;
if((j<2||j==4)&&k>1&&i>1)str=str+")";
if(k<4)str=str+opx[k]+d+"=24";
else str=d+opx[k]+str+"=24";
//alert(str);
form1.t5.value=str;
return 1;
}
}
j=j+1;
}
i=i+1;
}
}function fun3(e1,e2,e3,e4)
{
var i,j,k,a,b,c,d,t1,t2,t3;
var opx=["+","-","*","/"];
a=e1;b=e2;c=e3;d=e4;
for(i=0;;)
{
if(i>=4)break;
if(i==0)t1=a+b;
if(i==1)t1=a-b;
if(i==2)t1=a*b;
if(i==3)if(b!=0)t1=a/b;
for(j=0;;)
{
if(j>3)break;
if(j==0)t2=c+d;
if(j==1)t2=c-d;
if(j==2)t2=c*d;
if(j==3)if(d!=0)t2=c/d;
for(k=0;;k++)
{
if(k>3)break;
if(k==0)t3=t1+t2;
if(k==1)t3=t1-t2;
if(k==2)t3=t1*t2;
if(k==3)if(d!=0)t3=t1/t2;
if(t3==24)
{var str='';
/*if(k>1)document.write ("(");
document.write (a+opx[i]+b);
if(k>1)document.write (")");
document.write (opx[k]);
if(k>1)document.write ("(");
document.write (c+opx[j]+d);
if(k>1)document.write (")");
document.write ("=24<br>");*/ if(k>1&&i<2)str="(";
str=str+a+opx[i]+b;
if(k>1&&i<2)str=str+")";
str=str+opx[k];
if(k>0&&j<2)str=str+"(";
str=str+c+opx[j]+d;
if(k>0&&j<2)str=str+")";
str=str+"=24";
form1.t5.value=str;
return 1;
}
}
j=j+1;
}
i=i+1;
}
}
function fun2(a,b,c,d)
{
var i,j,k,str,flg;
var arr=[a,b,c,d];
/*arr[0]=a;arr[1]=b;arr[2]c;arr[3]=d;*/
for(i=0;;)
{
if(i>3)break;
for(j=0;;)
{
if(j>3)break;
if(j==i){j=j+1;continue;}
for(k=0;;)
{
if(k>3)break;
if(k==i||k==j){k=k+1;continue;}
for(l=0;;)
{
if(l>3)break;
if(l==i||l==j||l==k){l=l+1;continue;}
if(arr[i]==3&&arr[j]==3&&arr[k]==8&&arr[l]==8)
{form1.t5.value="8/(3-8/3)=24";return;}
flg=fun1(arr[i],arr[j],arr[k],arr[l]);
if(flg==1)return;
/*document.write("<b>"+arr[i]);
document.write(arr[j]);
document.write(arr[k]);
document.write(arr[l]+"</b><br>");*/
flg=fun3(arr[i],arr[j],arr[k],arr[l]);
if(flg==1)return;
l=l+1;
}
k+=1;
}
j=j+1;
}
i=i+1;
}
alert("此题无解!");
}</script><a href='javascript:fun2(parseInt(form1.t1.value),parseInt(form1.t2.value),
parseInt(form1.t3.value),parseInt(form1.t4.value));'target="_top">计算</a>
</html>