首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

根据四个数字计算24点,该如何处理

2012-02-13 
根据四个数字计算24点1-10中选4个,可重复的[解决办法]1 随机抽取4个数字2 4个数字四则运算穷举 答案为24就

根据四个数字计算24点
1-10中选4个,可重复的

[解决办法]
1 随机抽取4个数字
2 4个数字四则运算穷举 答案为24就 输出
应该比较麻烦
[解决办法]
得到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>

热点排行