求解一道pedro pascall题,麻烦说下思路再贴一下程序,谢谢!

各位大神,一道算24题的算法求指教,谢谢!【pascal吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:10,159贴子:
各位大神,一道算24题的算法求指教,谢谢!收藏
题目是一道经典的算24给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。现在的问题是,是否存在一种方式使得得到的表达式的结果等于24。这里加减乘除以及括号的运算结果和运算的优先级跟我们平常的定义一致(这里的除法定义是实数除法)。比如,对于5,5,5,1,我们知道5 * (5 – 1 / 5) = 24,因此可以得到24。又比如,对于1,1,4,2,我们怎么都不能得到24。输入 输入数据包括多行,每行给出一组测试数据,包括4个小于10个正整数。最后一组测试数据中包括4个0,表示输入的结束,这组数据不用处理。输出 对于每一组测试数据,输出一行,如果可以得到24,输出“YES”;否则,输出“NO”。样例输入 5 5 5 1
0 0 0 0 样例输出 YES NO 先说我的问题吧 设这四个数为a[1..4],我的程序只能计算(a[i]#a[j])#(a[m]#a[n])是否等于24的情况(其中#代表+ - * /中的任意一种运算符),在这样的条件下我的程序是对的,但是对于像题例中给出的‘比如,对于5,5,5,1,我们知道5 * (5 – 1 / 5) = 24’,我的程序就无能为力了,显示的就是NO。本人新手渣渣一枚,麻烦大家告诉我一下怎么改,说个思路就行(本人实在没有),谢谢了!附程序如下:(不好意思,看起来可能有点烦,但算法应该还是比较好理解的,麻烦大家了!)var
a:array[1..4]
b,c,d,e:array[1..4,1..4]
A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1:array[1..4,1..4,1..4,1..4]
i,j,m,n,k:
results:begin
for i:=1 to 4 do read(a[i]);
if (a[1]&&0)and(a[2]&&0)and(a[3]&&0)and(a[4]&&0) then
for i:=1 to 4 do
for j:=1 to 4 do
begin b[i,j]:=a[i]+a[j];
c[i,j]:=a[i]-a[j];
d[i,j]:=a[i]*a[j];
e[i,j]:=a[i]/a[j];
for i:=1 to 4 do
for j:=1 to 4 do
begin if i&&j then
begin for m:=1 to 4 do
if (m&&i) and (m&&j) then
n:=10-i-j-m;
A1[i,j,m,n]:=b[i,j]+b[m,n];if A1[i,j,m,n]=24 then begin results:=writeln('YES');
B1[i,j,m,n]:=b[i,j]*b[m,n];if B1[i,j,m,n]=24 then begin results:=writeln('YES');
C1[i,j,m,n]:=b[i,j]+c[m,n];if C1[i,j,m,n]=24 then begin results:=writeln('YES');
D1[i,j,m,n]:=b[i,j]-c[m,n];if D1[i,j,m,n]=24 then begin results:=writeln('YES');
E1[i,j,m,n]:=b[i,j]*c[m,n];if E1[i,j,m,n]=24 then begin results:=writeln('YES');
F1[i,j,m,n]:=c[i,j]+c[m,n];if F1[i,j,m,n]=24 then begin results:=writeln('YES');
G1[i,j,m,n]:=c[i,j]*b[m,n];if G1[i,j,m,n]=24 then begin results:=writeln('YES');
H1[i,j,m,n]:=b[i,j]+d[m,n];if H1[i,j,m,n]=24 then begin results:=writeln('YES');
I1[i,j,m,n]:=b[i,j]-d[m,n];if I1[i,j,m,n]=24 then begin results:=writeln('YES');
J1[i,j,m,n]:=b[i,j]*d[m,n];if J1[i,j,m,n]=24 then begin results:=writeln('YES');
K1[i,j,m,n]:=b[i,j]/d[m,n];if K1[i,j,m,n]=24 then begin results:=writeln('YES');
L1[i,j,m,n]:=d[i,j]*d[m,n];if L1[i,j,m,n]=24 then begin results:=writeln('YES');
M1[i,j,m,n]:=d[i,j]+d[m,n];if M1[i,j,m,n]=24 then begin results:=writeln('YES');
N1[i,j,m,n]:=d[i,j]-d[m,n];if N1[i,j,m,n]=24 then begin results:=writeln('YES');
O1[i,j,m,n]:=d[i,j]/d[m,n];if O1[i,j,m,n]=24 then begin results:=writeln('YES');
P1[i,j,m,n]:=b[i,j]+e[m,n];if P1[i,j,m,n]=24 then begin results:=writeln('YES');
Q1[i,j,m,n]:=b[i,j]-e[m,n];if Q1[i,j,m,n]=24 then begin results:=writeln('YES');
R1[i,j,m,n]:=b[i,j]*e[m,n];if R1[i,j,m,n]=24 then begin results:=writeln('YES');
S1[i,j,m,n]:=c[i,j]+d[m,n];if S1[i,j,m,n]=24 then begin results:=writeln('YES');
T1[i,j,m,n]:=c[i,j]*d[m,n];if T1[i,j,m,n]=24 then begin results:=writeln('YES');
U1[i,j,m,n]:=c[i,j]+e[m,n];if U1[i,j,m,n]=24 then begin results:=writeln('YES');
V1[i,j,m,n]:=c[i,j]*e[m,n];if V1[i,j,m,n]=24 then begin results:=writeln('YES');
W1[i,j,m,n]:=d[i,j]+e[m,n];if W1[i,j,m,n]=24 then begin results:=writeln('YES');
X1[i,j,m,n]:=d[i,j]-e[m,n];if X1[i,j,m,n]=24 then begin results:=writeln('YES');
Y1[i,j,m,n]:=d[i,j]*e[m,n];if Y1[i,j,m,n]=24 then begin results:=writeln('YES');if results=if results=if results=if results=
if results= false then writeln('NO');
until (a[1]=0)and(a[2]=0)and(a[3]=0)and(a[4]=0);end.
上海勇控总代理PILZ安全继电器,系列齐全,德国原装,假一罚十,联系人:文志勇,座机:,手机: QQ
这个程序看了好晕啊。。。
真的好复杂啊!!!!晕!!!
登录百度帐号推荐应用如何学习好汇编
问题1:学习汇编语言,要先学什么?
汇编语言直接与硬件结构打交道,所以学习汇编语言,你至少要懂得与之相关的硬件知识,比如中断系统、专用模块(比如串口,定时器,计数器)、存储器结构、数据总线、地址总线;你还需要熟悉指令系统;当然,数字电路知识也是必须的。
汇编语言结构不如高级语言那么清晰,看起来比较繁琐和枯燥,所以需要专心和静心,不能浮躁,否则很难深入进去,汇编语言使用频率最多的是十六进制数,所以数制转换你需要很熟悉。
应该知道PC及其CPU物理结构,计算机一般结构、功能、性能的研究。
《微机原理与接口》,《组成原理》有介绍。
问题2:pascal读程序写结果,代码如下:
&Point= record
X: longint
y: longint
e.c.x:=e.a+e.b
e.c.y:=e.a*e.b
writeln(e.c.x &‘,’ &e.c.y)
其实他是迷惑你的,这个程序其实是等于a:=1 b:=2 x:=a+b; y:=a*b; writeln(x,‘,’,y);
答案是3,2
(注意:不可无逗号)
这是一份noip的初赛试卷里的一道题。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5303次
排名:千里之外
原创:12篇
卫鹏飞,喜欢编程,心态乐观,为人随和,办事稳重,责任心强,能够熟练应用AVR、51等系列单片机的汇编语言、C语言进行底层软件的编写,还熟练应用PROTEL进行多层电路板的设计,并能独立完成电路板的手工焊接、电路调试等。还有,我痘痘挺多的,最近一直关注,感觉还是挺多的,可以了解到一些。最后呢,我经常自学,例如php、c++,java等,编程的人,就是不断的通过努力,提高自己的能力哦。}

我要回帖

更多关于 pascal语言 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信