A Za, A Za, Fighting...

坚信:勤能补拙

PKU 2005 Blackjack

问题:
http://poj.org/problem?id=2005

思路:
简单题,但是容易错
特殊情况: 两张牌都是Ace,这也是Ace需要被当作是1的唯一情况

代码:
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 int player, dealer;
 5 int n, count[14];
 6 char card[3][2];
 7 
 8 int
 9 score(char ch)
10 {
11     if(ch == 'A')
12         return 11;
13     else if(ch == 'T' || ch=='J' || ch=='Q' || ch=='K')
14         return 10;
15     else
16         return ch-'0';
17 }
18 
19 int
20 main(int argc, char **argv)
21 {
22     int i, tmp, total;
23     while(scanf("%d"&n)!=EOF && n) {
24         total = player = dealer = 0; memset(count, 0sizeof(count));
25         for(i=0; i<3; i++) {
26             scanf("%s", card[i]);
27             tmp = score(card[i][0]);
28             ++count[tmp];
29             if(i == 0)
30                 dealer += tmp;
31             else
32                 player += tmp;
33         }
34         if(player == 22/* two Ace */
35             player = 12;
36         for(i=2; i<=11; i++) {
37             if((dealer+i==22 ? 12 : dealer+i) < player) {
38                 if(i == 10)
39                     total += (4*4*n-count[i]);
40                 else
41                     total += (4*n-count[i]);
42             }
43         }
44         printf("%.3f%%\n\n", ((double)total)/(52*n-3)*100);
45     }
46 }

posted on 2010-10-19 21:30 simplyzhao 阅读(179) 评论(0)  编辑 收藏 引用 所属分类: G_其他


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2010年10月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜