讨论 / 24点。WA:80。牛们来找找错在哪了。【悬赏】
Vilaboke 2010-08-16 06:16:00
点我顶贴 收藏 删除
program p24;

var

i,j,n,k,t,l:integer;

a,b:array[1..100]of real;

x:char;

s:string;

procedure zero(n:integer);

var

te:real;

begin

if n=1 then

if abs(a[1]-24)<0.00000000001 then begin write('yes'); halt; end else exit;

if a[1]=0 then exit;

te:=a[1];

a[1]:=a[1]+a[n]; zero(n-1); a[1]:=te;

a[1]:=a[1]-a[n]; zero(n-1); a[1]:=te;

a[1]:=a[n]-a[1]; zero(n-1); a[1]:=te;

a[1]:=a[1]*a[n]; zero(n-1); a[1]:=te;

if a[n]<>0 then

begin

a[1]:=a[1]/a[n]; zero(n-1); a[1]:=te;

a[1]:=a[n]/a[1]; zero(n-1); a[1]:=te;

end;

end;

begin

assign(input,'24d.in');

reset(input);

assign(output,'24d.out');

rewrite(output);

readln(s);

l:=length(s); k:=1; i:=0;

while k<=l+2 do

begin

if (s[k+1]=' ')or(k=l) then

begin

inc(i);

case s[k] of

'A':b[i]:=1;

'K':b[i]:=13;

'J':b[i]:=11;

'Q':b[i]:=12;

'2'..'9':b[i]:=ord(s[k])-ord('0');

end;

k:=k+2;

end

else begin inc(i); b[i]:=10; k:=k+3; end;

if i=4 then break;

end;

for i:=1 to 4 do

for j:=1 to 4 do if i<>j then

for k:=1 to 4 do if (i<>k)and(j<>k) then

for t:=1 to 4 do if (i<>t)and(j<>t)and(k<>t) then

begin

a[1]:=b[i]; a[2]:=b[j]; a[3]:=b[k]; a[4]:=b[t];

zero(4);

end;

writeln('no');

close(input);

close(output);

end.

#1 zhanglin@2010-08-10 21:04:00
回复 删除
回回你悬赏都是空悬
#2 Vilaboke@2010-08-11 03:49:00
回复 删除
[color=blue]A和1还都可以用啊。。郁闷。改好了。
#3 tzh@2010-08-16 05:59:00
回复 删除
加了括号没

。。。。。。。。。。。。如题

#4 dsqx71@2010-08-16 06:16:00
回复 删除
和我一样

..

查看更多回复
提交回复