导航

HDOJ – 2043 密码

Posted on 2012-11-22 19:17  Mis'World  阅读(226)  评论(0)    收藏  举报

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

最基础的模拟题目,只要按照题目给出的要求进行判断即可。

代码如下:

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 const string s="~!@#$%^";
 5 string ss;
 6 int n;
 7 int yes(string a){
 8     if (a.size()<8 || a.size()>16) return 0;
 9     int t1,t2,t3,t4;
10     t1=t2=t3=t4=0;
11     for (string::size_type i(0);i<a.size();i++){
12         if (a[i]>='A'&&a[i]<='Z'){
13             t1=1;
14             break;
15         }
16     }
17     for (string::size_type i(0);i<a.size();i++){
18         if ((a[i]>='a')&&(a[i]<='z')){
19             t2=1;
20             break;
21         }
22     }
23     for (string::size_type i(0);i<a.size();i++){
24         if (a[i]>='0'&&a[i]<='9'){
25             t3=1;
26             break;
27         }
28     }
29     for (string::size_type i(0);i<a.size();i++){
30         if (s.find(a[i],0)!=string::npos){
31             t4=1;
32             break;
33         }
34     }
35     if (t1+t2+t3+t4>2) return 1;
36     return 0;
37 }
38 int main(){
39     scanf("%d\n",&n);
40     while (n--){
41         getline(cin,ss);
42         if (yes(ss)) printf("YES\n");
43         else printf("NO\n");
44     }
45     return 0;
46 }