社区
Java SE
帖子详情
根据四个数字计算24点
lingkeylbh
2007-08-03 10:10:52
1-10中选4个,可重复的
...全文
765
6
打赏
收藏
根据四个数字计算24点
1-10中选4个,可重复的
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cursor_wang
2007-08-04
打赏
举报
回复
这个是用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>
justicesun
2007-08-04
打赏
举报
回复
虽然656种可能性,但方法写起来倒是会比较简单...应该不会到1000行...
justicesun
2007-08-04
打赏
举报
回复
像咱笨人...只能穷举了...穷举也不是很多种情况哈
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种可能性
haisenmai
2007-08-04
打赏
举报
回复
得到4个数字后a b c d
全排列4个数字
a a a a
a a a b
a a a c ......
再
全排列4个运算符
...
都有4×4×4×4种排列
然后把他们隔位组合成一个字符串表达式
难点就是 表达式求值了
方法比较笨了 呵呵
lingkeylbh
2007-08-03
打赏
举报
回复
不知道四则运算穷举,怎么弄比较好呢
haisenmai
2007-08-03
打赏
举报
回复
1 随机抽取4个数字
2 4个数字四则运算穷举 答案为24就 输出
应该比较麻烦
[c++]随机生成
四个
数字
,
计算
24点
,并输出算式
这篇博客介绍了如何使用C++编程语言,结合ctime头文件和rand()函数生成
四个
随机
数字
,进而
计算
24点
游戏的算式。程序会根据用户输入决定是否继续输出新的算式。
java编程实现
24点
游戏_Java实现
24点
小游戏
本文介绍了一种使用Java编程实现
24点
游戏的方法。通过穷举算法,对
四个
随机生成的1到13之间的
数字
(J代表11,Q代表12,K代表13,A代表1)进行各种加减乘除运算,找出所有可能的组合以得出24。程序首先对
数字
进行分组和排序,然后根据
数字
的不同组合情况分别进行
计算
。文章提供了完整的Java代码实现,包括
计算
逻辑和表达式的输出。
JAVA实现
24点
游戏输入
数字
,得出所有表达式
本文介绍了如何使用JAVA实现
24点
游戏的算法。首先,详细阐述了游戏的题目要求,即根据
四个
数字
通过加减乘除运算得出24。接着,分析了问题的关键在于穷举
数字
的组合并
计算
表达式的值。流程设计和算法实现部分虽然未展开,但可以推测作者设计了递归或回溯的方法来生成所有可能的表达式。最后,作者从该编程挑战中学习了ArrayList的操作、随机数生成以及程序模块化的思维方式。
扑克牌接龙游戏代码c语言,C++点扑克牌游戏(含源码).doc
该实验旨在实现一个扑克牌
24点
游戏,通过C++编程,根据输入的
四个
1到13的整数找出能得出24的运算表达式。实验采用文件输入输出,通过循环和判断确定运算顺序,解决
数字
运算次序问题。源程序包括读取输入数据,
计算
功能,以及搜索和打印解的功能。算法流程图展示了
计算
和搜索的步骤。
24点
小游戏(C语言实现)
本文详细介绍了一款经典纸牌益智游戏——
24点
的算法实现过程,包括题目分析、算法构造、源代码实现及调试测试等内容。通过C语言编程,实现了随机生成
四个
数字
并
计算
所有可能达到
24点
的表达式。
Java SE
62,622
社区成员
307,255
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章