题目链接: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