字符识别?
你的任务是写一个程序进行字符识别。别担心,你只需要识别1, 2, 3,如下:
.*. *** ***
.*. ..* ..*
.*. *** ***
.*. *.. ..*
.*. *** ***
输入仅包含一组数据,由6行组成。第一行为字符的个数n(1<=n<=10)。以下5行每行包含4n个字符。每个字符恰好占5行3列,然后是一个空列(用"."填充)。
输出应包含一行,即识别出的各个字符。
3.
*..***.***.
.*....*...*.
.*..***.***.
.*..*.....*.
.*..***.***.
123
想法:水题
我看别人说只要找出1,2,3字符串间差别冒个字符差别
总觉得有点不妥,但那样oj也能过
我用小学做数学题思维做的
代码:
#include<stdio.h>
#include<string.h>
char s[10][100];
int main()
{
int n;
int i,j;
scanf("%d",&n);
for(i=1;i<=5;i++)
{
getchar();
//gets(s[i]);
scanf("%s",s[i]);
}
for(i=1;i<=n;i++)
{
int count=0;
for(j=1;j<=5;j++)
{
if((s[j][(i-1)*4+0]=='.')&&(s[j][(i-1)*4+1]=='*')&&(s[j][(i-1)*4+2]=='.'))
count+=1*j;
else if((s[j][(i-1)*4+0]=='*')&&(s[j][(i-1)*4+1]=='*')&&(s[j][(i-1)*4+2]=='*'))
count+=4*j;
else if((s[j][(i-1)*4+0]=='.')&&(s[j][(i-1)*4+1]=='.')&&(s[j][(i-1)*4+2]=='*'))
count+=2*j;
else if((s[j][(i-1)*4+0]=='*')&&(s[j][(i-1)*4+1]=='.')&&(s[j][(i-1)*4+2]=='.'))
count+=3*j;
}
if(count==15)
printf("1");
if(count==52)
printf("2");
if(count==48)
printf("3");
}
printf("\n");
return 0;
}
#include<string.h>
char s[10][100];
int main()
{
int n;
int i,j;
scanf("%d",&n);
for(i=1;i<=5;i++)
{
getchar();
//gets(s[i]);
scanf("%s",s[i]);
}
for(i=1;i<=n;i++)
{
int count=0;
for(j=1;j<=5;j++)
{
if((s[j][(i-1)*4+0]=='.')&&(s[j][(i-1)*4+1]=='*')&&(s[j][(i-1)*4+2]=='.'))
count+=1*j;
else if((s[j][(i-1)*4+0]=='*')&&(s[j][(i-1)*4+1]=='*')&&(s[j][(i-1)*4+2]=='*'))
count+=4*j;
else if((s[j][(i-1)*4+0]=='.')&&(s[j][(i-1)*4+1]=='.')&&(s[j][(i-1)*4+2]=='*'))
count+=2*j;
else if((s[j][(i-1)*4+0]=='*')&&(s[j][(i-1)*4+1]=='.')&&(s[j][(i-1)*4+2]=='.'))
count+=3*j;
}
if(count==15)
printf("1");
if(count==52)
printf("2");
if(count==48)
printf("3");
}
printf("\n");
return 0;
}