根据四个数字计算24点 1-10中选4个,可重复的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 得到4个数字后a b c d 全排列4个数字a a a a a a a b a a a c ......再全排列4个运算符 ...都有4×4×4×4种排列然后把他们隔位组合成一个字符串表达式难点就是 表达式求值了方法比较笨了 呵呵 像咱笨人...只能穷举了...穷举也不是很多种情况哈0±a±b±c±d 16种1*/(±a±b±c)*/(±d) 4*64=256种1*/(±a±b)*/(±c±d) 2*64=128种1*/(±a)*/(±b)*/(±c)*/(±d) 256种不加开方啥的应该够了...656种可能性 这个是用JS写的24点程序,你把它保存复制保存为html就可以了.(例如5,5,5,1.也可以算)<%@ 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> 在java里有没有类似于C#this关键字的功能? 程序错误,请求支援~!!! Console的问题.大家帮忙看看,急啊!!! eddygtimegod(dark) 请进,接一下分,谢谢 java正则表达式检测字符串中是否含有 * 『急』请问那儿能下张孝祥IT课堂---java视频教学录象!谢谢!! 请问一个使用JMS发送消息的问题: JAVA中的一个迷惑的弱智问题,谁能解答? 鄙人愚钝,请高人明示有关weblogic中连接池与数据源的配置。 穿越防火墙以及代理服务器 ? 如何读取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>