HNUSTOJ-1696 简单验证码识别(模拟)
来源:互联网 发布:三维测量仪编程教学 编辑:程序博客网 时间:2024/06/05 20:29
1696: 简单验证码识别
时间限制: 2 Sec 内存限制: 128 MB提交: 148 解决: 44
[提交][状态][讨论版]
题目描述
验证码是Web系统中一种防止暴力破解的重要手段。其中,目前以静态图验证码应用最为广泛,但是由于一些验证码的设计者缺乏相关知识和经验,所以目前在用的很多验证码都可以被轻松攻破的(如图1中的验证码就很容易通许程序识别出上面的文字是”1234”)。那么就从它开始我们的验证码识别之旅吧~
图1
已知验证码图片由9*25的像素矩阵组成,每个验证码中包含4个数字字符,每个字符是1个7*5的像素矩阵(如下图2所示,其中每一个格表示1个像素点)。
另外,验证码的四周留有1像素宽度的空白,每个字符(点阵)间也有1列1像素宽度的空白隔开。
图2
成功识别出全部验证码的同学将获得Accept作为奖励~
输入
第1行包含一个数字N(N <= 50000),表示验证码的数量。
接下来将会跟着N个9*25的验证码像素矩阵(其中,”.”表示背景,”*”表示文字部分),每个验证码后面跟着一个空行。
输出
输出对应验证码上的字符,每个验证码占一行。
样例输入
2.............................*....*....***..*****....**...**...*...*.*.......*.*....*...*...*.****...*..*....*....****.....*..*****...*.......*.....*.....*....*......*..*...*.....*...***...**....***......................................................***....**...***.....*...*...*..*....*...*...**...*...*.*.........*..*.*....****.****.....*..*..*.......*.*...*...*...*****.....*..*...*..*.......*....**....***..*****....*...........................
样例输出
41959624
提示
来源
孙大川(出题)、樊劲宇(验题)
好像有点摸清这种题的套路了。。。
#include#include #include using namespace std;const char d[10][9][7]={{"......",".***..","*...*.","*..**.","*.*.*.","**..*.","*...*.",".***..","......"},{"......","..*...",".**...","..*...","..*...","..*...","..*...",".***..","......"},{"......",".***..","*...*.","....*.","...*..","..*...",".*....","*****.","......"},{"......","*****.","...*..","..*...","...*..","....*.","*...*.",".***..","......"},{"......","...*..","..**..",".*.*..","*..*..","*****.","...*..","...*..","......"},{"......","*****.","*.....","****..","....*.","....*.","*...*.",".***..","......"},{"......","..**..",".*....","*.....","****..","*...*.","*...*.",".***..","......"},{"......","*****.","....*.","...*..","..*...",".*....",".*....",".*....","......"},{"......",".***..","*...*.","*...*.",".***..","*...*.","*...*.",".***..","......"},{"......",".***..","*...*.","*...*.",".****.","....*.","...*..",".**...","......"}};char mat[9][26];const int cur[4]={1,7,13,19};int match(int x){ int i,j,k; bool is_match; for(i=0;i<10;i++){ is_match = true; for(j=0;j<9 && is_match;j++) for(k=0;k<6;k++){ if(d[i][j][k]!=mat[j][k+x]){ is_match = false; break;} } if(is_match) return i; } return -1;}int main(){ int T; scanf("%d",&T); while(T--){ for(int i=0;i<9;i++) scanf("%s",mat[i]); for(int i=0;i<4;i++) printf("%d",match(cur[i])); printf("\n"); }}
阅读全文
0 0
- HNUSTOJ-1696 简单验证码识别(模拟)
- 简单验证码识别
- 简单验证码识别
- 简单验证码识别
- 简单验证码识别
- 简单验证码识别
- 简单验证码识别
- HNUST 1696: 简单验证码识别。
- 【图像识别】简单验证码识别
- 简单验证码的识别
- Python3简单验证码识别
- python简单验证码识别
- python简单验证码识别
- 识别简单的验证码
- python验证码简单识别
- [验证码]简单验证码识别
- C# 模拟登陆、识别验证码
- 【Python模拟登录与验证码识别】
- Glide 圆形加载图片
- Qt Creator常用快捷键
- 如何使用规范的标识符为变量命名,命名规则,命名实例详解
- Ajax笔记
- linux的历史命令
- HNUSTOJ-1696 简单验证码识别(模拟)
- Maven学习 --- <distributionManagement>
- python数据结构之元组
- While 语句的使用
- [Leetcode] 348. Design Tic-Tac-Toe 解题报告
- python-pandas 时间日期的处理(下篇)
- NYOJ 448 寻找最大数
- 网易研发工程师编程题——小易的升级之路
- npm install -g cordova err 解决办法