题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1330
你的任务是写一个程序进行字符识别。别担心,你只需要识别1, 2, 3,如下:
.*. *** ***
.*. ..* ..*
.*. *** ***
.*. *.. ..*
.*. *** ***
输入仅包含一组数据,由6行组成。第一行为字符的个数n(1<=n<=10)。以下5行每行包含4n个字符。每个字符恰好占5行3列,然后是一个空列(用"."填充)。
输出应包含一行,即识别出的各个字符。
3.*..***.***..*....*...*..*..***.***..*..*.....*..*..***.***.
123
PS:
因为只需要判断123!所以观察一下他们的不同!
代码如下:
#include <cstdio> #include <cstring> int main() { int n; char s[7][77]; while(~scanf("%d",&n)) { int i, j; for(i = 0; i < 5; i++) { scanf("%s",s[i]); } int r = n; int c = 4*n; int a[100]; memset(a,0,sizeof(a)); int l = 0; for(j = 0; j < c;) { if(s[0][j]=='.'&&s[0][j+2]=='.'&&s[4][j]=='.'&&s[4][j+2]=='.') { a[l++] = 1; } if(s[0][j]=='*'&&s[0][j+1]=='*'&&s[0][j+2]=='*') { if(s[3][j]=='*') { a[l++] = 2; } } if(s[0][j]=='*'&&s[0][j+1]=='*'&&s[0][j+2]=='*') { if(s[3][j+2]=='*') { a[l++] = 3; } } j+=4; } for(i = 0; i < l; i++) { printf("%d",a[i]); } } return 0; } /* 6 .*..***.***..*..***.***. .*....*...*..*....*...*. .*..***.***..*..***.***. .*..*.....*..*..*.....*. .*..***.***..*..***.***. */
CSU 1330: 字符识别?(字符串模拟啊 湖南省第九届大学生计算机程序设计竞赛)
原文地址:http://blog.csdn.net/u012860063/article/details/41384225