hdoj-2043-密码(解题报告)
来源:互联网 发布:h3c 多个端口删除vlan 编辑:程序博客网 时间:2024/05/22 20:37
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=2043
问题描述
密码
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 54864 Accepted Submission(s): 22205
Problem Description
网上流传一句话:"常在网上飘啊,哪能不挨刀啊~"。其实要想能安安心心地上网其实也不难,学点安全知识就可以。
首先,我们就要设置一个安全的密码。那什么样的密码才叫安全的呢?一般来说一个比较安全的密码至少应该满足下面两个条件:
(1).密码长度大于等于8,且不要超过16。
(2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。
这四个字符类别分别为:
1.大写字母:A,B,C...Z;
2.小写字母:a,b,c...z;
3.数字:0,1,2...9;
4.特殊符号:~,!,@,#,$,%,^;
给你一个密码,你的任务就是判断它是不是一个安全的密码。
首先,我们就要设置一个安全的密码。那什么样的密码才叫安全的呢?一般来说一个比较安全的密码至少应该满足下面两个条件:
(1).密码长度大于等于8,且不要超过16。
(2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。
这四个字符类别分别为:
1.大写字母:A,B,C...Z;
2.小写字母:a,b,c...z;
3.数字:0,1,2...9;
4.特殊符号:~,!,@,#,$,%,^;
给你一个密码,你的任务就是判断它是不是一个安全的密码。
Input
输入数据第一行包含一个数M,接下有M行,每行一个密码(长度最大可能为50),密码仅包括上面的四类字符。
Output
对于每个测试实例,判断这个密码是不是一个安全的密码,是的话输出YES,否则输出NO。
Sample Input
3a1b2c3d4Linle@ACM^~^@^@!%
Sample Output
NOYESNO
Author
linle
题目分析:有M个问题实例,逐次判断每组实例是否为安全密码,从密码长度和密码类型两个方面分析。
解题思路:先判断代码长度是否符合安全密码要求,若符合,再挨个判断字符类型,定义四个标志变量,每出现一种字符类型,对应的标志变量改变,循环结束,根据标志变量和的值大小,判断是否为安全密码。
错误原因:开始时读题不认真,没有控制密码长度
代码实现:
#include<stdio.h>#include<string.h>char str[60];int main (void){ int M,a,b,c,d,i; scanf("%d",&M); getchar();//吃回车 while(M--) { a=b=c=d=0; gets(str); for(i=0;str[i]!='\0';i++) { if(strlen(str)>=8 && strlen(str)<=16) { if(str[i]>='A' && str[i]<='Z') a=1; if(str[i]>='a' &&str[i]<='z') b=1; if(str[i]>='0' &&str[i]<='9') c=1; if(str[i]=='~' || str[i]=='!'||str[i]=='@'|| str[i]=='#'|| str[i]=='$'|| str[i]=='%'|| str[i]=='^') d=1; } } if(a+b+c+d>2) printf("YES\n"); else printf("NO\n"); } return 0;}
0 0
- hdoj-2043-密码(解题报告)
- 解题报告-HDOJ-1086(几何问题)
- 解题报告-HDOJ-1285(拓扑排序)
- 解题报告-HDOJ-1251(字典树)
- 解题报告-HDOJ-1075(字典树)
- hdoj-2566-统计硬币(解题报告)
- hdoj-1008-Elevator(解题报告)
- hdoj-2005-第几天?(解题报告)
- hdoj-2013-蟠桃记(解题报告)
- hdoj-2017-字符串统计(解题报告)
- hdoj-2040-亲和数(解题报告)
- hdoj-2081-手机短号(解题报告)
- hdoj-2567-寻梦(解题报告)
- hdoj-2564-词组缩写(解题报告)
- HDOJ 1020解题报告
- hdoj 1312解题报告
- hdoj 1241解题报告
- hdoj 1153 解题报告
- 安装nginx
- URL的组成格式
- LintCode-克隆二叉树
- 《机器学习实战》学习笔记---开发机器学习应用程序的基本步骤
- nginx 命令
- hdoj-2043-密码(解题报告)
- js修改不了input的值
- SDUT 2074 区间覆盖问题
- tip5——样式和主题
- java 常用类之Calendar
- 如何理解和应用闭包
- spring-mvc底层实现-1
- 树莓派frame视频监控
- js实现lazyMan