讨论 / 全排列+枚举(WA70),求神牛找错。。。
w745241408 2012-07-07 18:52:00
点我顶贴 收藏 删除

var

a:array[1..4] of longint;

d:array[1..4] of longint;

i,j,k,r,n:longint;

s:string;

ans:boolean;

procedure qplsf;

var

t,p,q,i,j:longint;

begin

p:=n-1;

while d[p]>d[p+1] do dec(p);

q:=p+1;

while (q<n)and(d[q+1]>d[p]) do inc(q);

t:=d[p];

d[p]:=d[q];

d[q]:=t;

i:=p+1;

j:=n;

while i<j do begin

t:=d[i];

d[i]:=d[j];

d[j]:=t;

inc(i);

dec(j);

end;

end;

function v(a,b,o:longint):longint;

begin

case o of

1:v:=a+b;

2:v:=a-b;

3:v:=a*b;

4:begin

writeln(a,'div',b);

if (a mod b <>0)or(b=0) then v:=maxint

else v:=a div b;

end;

end;

end;

begin

readln(s);

n:=0;

for i:=1 to length(s) do

if s[i] in['A','2'..'9','1','J','Q','K'] then begin

inc(n);

d[n]:=n;

if s[i]='A' then a[n]:=1;

if s[i] in ['2'..'9'] then a[n]:=ord(s[i])-ord('0');

if s[i]='1' then a[n]:=10;

if s[i]='J' then a[n]:=11;

if s[i]='Q' then a[n]:=12;

if s[i]='K' then a[n]:=13;

end;

ans:=false;

for r:=1 to 24 do begin

for i:=1 to 4 do

for j:=1 to 4 do

for k:=1 to 4 do

if v(v(v(a[d[1]],a[d[2]],i),a[d[3]],j),a[d[4]],k)=21 then

ans:=true;

if r<>24 then qplsf;

end;

if ans then

write('yes')

else

write('no');

end.

#1 hzypp@2012-07-07 18:51:00
回复 删除
你查查数据5 1 5 5

(5-(1/5))*5

#2 hzypp@2012-07-07 18:52:00
回复 删除
我也是这么错的。。。。

无语了。。。。。!!!!!!

查看更多回复
提交回复