hdu-2043解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2043
题意解析:目的是判断一串密码是否安全,条件是满足1.大写字母:A,B,C...Z; 2.小写字母:a,b,c...z; 3.数字:0,1,2...9; 4.特殊符号:~,!,@,#,$,%,^;四种类型符号中的三种。
做题思路:最好是定义四个flag变量来进行标记,满足一个条件,就使 flag=1,只要满足有 4个flag之和大于等于3就为安全密码;
代码实现:
#include <stdio.h> #include <string.h> int main() { int m,i,j,len; int flag1,flag2,flag3,flag4; char s[55]; scanf("%d",&m); while(m--) { scanf("%s",s); flag1=0; flag2=0; flag3=0; flag4=0; len=strlen(s); for(i=0;i<len;i++) { j=i+1;////////////////////////////用于记录密码的字符数 if('a'<=s[i]&&s[i]<='z') { flag1=1; } if('A'<=s[i]&&s[i]<='Z') { flag2=1; } if('0'<=s[i]&&s[i]<='9') { flag3=1; } if(s[i]=='~'||s[i]=='!'||s[i]=='@'||s[i]=='#'||s[i]=='$'||s[i]=='%'||s[i]=='^') flag4=1; } if(flag1+flag2+flag3+flag4>=3&&j>=8&&j<=16)/////////////////////////////////////关键条件:保证密码有三种字符,同时密码的字符数在8-16个之间 printf("YES\n"); else printf("NO\n"); } return 0; }