码迷,mamicode.com
首页 > 其他好文 > 详细

Hdu 4930 斗地主

时间:2014-08-08 12:00:45      阅读:334      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   for   art   

  模拟题,只是想纪念下,WA到死了…… 看到好多代码都好长,其实想说不用这么暴力。

 

bubuko.com,布布扣
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cstdlib>
 5 #include <cmath>
 6 #include <algorithm>
 7 #include <string>
 8 #include <queue>
 9 #include <stack>
10 #include <vector>
11 #include <map>
12 #include <set>
13 #include <functional>
14 #include <time.h>
15 
16 using namespace std;
17 
18 const int INF = 1<<30;
19 const int MAXN = 22;
20 
21 char str[2][MAXN];
22 int id[256];
23 int cnt[2][MAXN];
24 int MAX[2][5];
25 int tr[2][10];
26 
27 bool check() {
28     int len[2] = {strlen(str[0]), strlen(str[1])};
29     if (len[0]==0) return true;
30     memset(cnt, 0, sizeof(cnt));
31     memset(MAX, 0, sizeof(MAX));
32     memset(tr, 0, sizeof(tr));
33 
34     for (int i = 0; i < 2; i++) //统计每张牌出现的数量
35         for (int j = 0; j < len[i]; j++)
36             cnt[i][id[str[i][j]]]++;
37 
38     for (int k = 0; k < 2; k++) //找出最大的牌
39         for (int i = 4; i > 0; i--)
40             for (int j = 17; j > 0; j--)
41                 if (cnt[k][j]>=i) {
42                     MAX[k][i] = j;
43                     break;
44                 }
45     for (int k = 0; k < 2; k++) //3带1、2
46         for (int i = 1; i < 3; i++)
47             for (int j = 0; j < 18; j++)
48                 if (MAX[k][3]>0 && j!=MAX[k][3] && cnt[k][j]>=i)
49                     tr[k][i] = MAX[k][3];
50 
51     if (len[0]<5 && MAX[0][len[0]]>0) return true; //能出完
52     if (MAX[0][4]>0&&len[0]==6) return true; //4带2
53     if ((len[0]==4&&tr[0][1]>0)||(len[0]==5&&tr[0][2]>0)) return true; //能出完+1
54     if (cnt[0][16]>0&&cnt[0][17]>0) return true; //有王炸
55     if (cnt[1][16]>0&&cnt[1][17]>0) return false; //对方有王炸
56     if (MAX[0][4]<MAX[1][4]) return false; //对方有炸弹
57 
58     for (int i = 4; i > 0; i--)
59         if (MAX[0][i]>=MAX[1][i] && MAX[0][i]>0) //有大过对方的牌
60             return true;
61 
62     return false;
63 }
64 
65 int main() {
66     #ifdef Phantom01
67         freopen("HDU4930.txt", "r", stdin);
68     #endif //Phantom01
69 
70     id[3] = 3;
71     id[4] = 4;
72     id[5] = 5;
73     id[6] = 6;
74     id[7] = 7;
75     id[8] = 8;
76     id[9] = 9;
77     id[T] = 10;
78     id[J] = 11;
79     id[Q] = 12;
80     id[K] = 13;
81     id[A] = 14;
82     id[2] = 15;
83     id[X] = 16;
84     id[Y] = 17;
85 
86     int T;
87     scanf("%d", &T);
88     gets(str[0]);
89 
90     while (T--) {
91         gets(str[0]);
92         gets(str[1]);
93         if (check()) puts("Yes");
94         else puts("No");
95     }
96 
97     return 0;
98 }
View Code

 

Hdu 4930 斗地主,布布扣,bubuko.com

Hdu 4930 斗地主

标签:style   blog   http   color   os   io   for   art   

原文地址:http://www.cnblogs.com/Phantom01/p/3898801.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!