Description
给定一张n*m的图,上面有4种线段,’-‘,’|’,’\’,’/’,判断图上是否有且仅有一条这样的线段
Input
多组输入,第一行为用例组数t,每组用例第一行为两个整数n和m表示图的行列数,之后为以n*m矩阵表示该张图
Output
对于每组用例,如果图上有且仅有一条线段则输出CORRECT,否则输出INCORRECT
Sample Input
5
5 5
…..
….
….
….
…..
3 3
/..
./.
../
3 6
.|….
.|.—
.|….
3 3
…
…
…
1 1
/
Sample Output
CORRECT
INCORRECT
INCORRECT
INCORRECT
CORRECT
Solution
水题,注意/是转义字符’//’
Code
#include<stdio.h>
#include<string.h>
int T,n,m;
char map[15][15];
int main()
{
scanf("%d",&T);;
while(T)
{
int i,j,ans=0;//ans为线段数量
memset(map,'.',sizeof(map));//初始化
scanf("%d%d",&n,&m);
getchar();
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
map[i][j]=getchar();
if(map[i][j]=='.')
continue;
else if(map[i][j]=='/')
{
if(map[i+1][j-1]=='/'||map[i-1][j+1]=='/')
continue;
else
ans++;
}
else if(map[i][j]=='\\')
{
if(map[i-1][j-1]=='\\'||map[i+1][j+1]=='\\')
continue;
else
ans++;
}
else if(map[i][j]=='|')
{
if(map[i-1][j]=='|'||map[i+1][j]=='|')
continue;
else
ans++;
}
else if(map[i][j]=='-')
{
if(map[i][j-1]=='-'||map[i][j+1]=='-')
continue;
else
ans++;
}
}
getchar();
}
if(ans==1)//只有一条线段
printf("CORRECT\n");
else
printf("INCORRECT\n");
T--;
}
return 0;
}