比赛 |
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.