比赛 20121106 评测结果 C
题目名称 二十一点 最终得分 0
用户昵称 digital-T 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2012-11-06 11:02:29
显示代码纯文本
var
n,i,j,win:integer;
f:array[1..1000]of integer;
//____________________________________
procedure ddd(a,b,q,roll,w:integer);
begin
if a>21 then ddd(0,0,q,0,w+1);
if b>21 then ddd(0,0,q,0,w);
if n-q+1<6 then if win<w then win:=w;
if(a<=21)and(b<=21)and(q<=n)then
 begin
  if roll mod 2=1 then //boss call
   if b<=16 then ddd(a,b+f[q],q+1,roll+1,w)else ddd(a,b,q,roll+1,w);
  if roll mod 2=0 then //you call
   begin
    ddd(a+f[q],b,q+1,roll+1,w);
    ddd(a,b,q,roll+1,w);
   end;
 end;
end;
//____________________________________
begin
assign(input,'jack.in');reset(input);
assign(output,'jack.out');rewrite(output);
read(n);
for i:=1 to n do read(f[i]);
ddd(f[2]+f[4],f[1]+f[3],5,1,0);//1.you have;2.it have;3.what'sleft;4.roll5.howmany you won
write(win);
close(input);close(output);
end.