HDU 2043

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2043

代码如下:

 1 #include <cstdio>
 2 #include <cstring>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int a[4];
 8     char s[51];
 9     int t, flag;
10     while(scanf("%d", &t) != EOF)
11     {
12          for(int i = 0; i < t; i++)
13          {
14                  memset(a, 0, sizeof(a));
15                  scanf("%s", s);
16                  int len = strlen(s);
17                  flag = 0;
18                  if(len < 8 || len > 16)
19                  {
20                         flag = 1;       
21                  }
22                  for(int j = 0; j < len; j++)
23                  {
24                         if('a' <= s[j] && s[j] <= 'z')
25                         {
26                                if(!a[0])
27                                {
28                                      a[0] = 1;         
29                                }       
30                         }        
31                         else if('A' <= s[j] && s[j] <= 'Z')
32                         {
33                                if(!a[1])
34                                {
35                                        a[1] = 1;         
36                                }     
37                         }
38                         else if('0' <= s[j] && s[j] <= '9')
39                         {
40                                if(!a[2])
41                                {
42                                         a[2] = 1;         
43                                }     
44                         }
45                         else
46                         {
47                                switch(s[j])
48                                {
49                                     case '^':
50                                     case '~':
51                                     case '@':
52                                     case '!':
53                                     case '%':
54                                     case '$':
55                                     case '#':
56                                          a[3] = 1;
57                                          break;
58                                     default: flag = 1;            
59                                }    
60                         }
61                  }  
62                  int sum = 0;
63                  for(int i = 0; i < 4; i++)
64                  {
65                          sum += a[i];               
66                  } 
67                  if(flag)
68                  {
69                          printf("NO\n");       
70                  }
71                  else if(sum >= 3)
72                  {
73                         printf("YES\n");       
74                  }     
75                  else
76                  {
77                         printf("NO\n");    
78                  }
79          }                   
80     }
81     return 0;    
82 }
posted @ 2012-08-18 21:15  山路水桥  阅读(265)  评论(0编辑  收藏  举报