您的位置:首页 > 其它

UVa 232 - Crossword Answers

2014-10-20 13:03 239 查看
昨晚看了看,感觉还可以,就把这题写出来了,刚才交的的是WA了一次,原因是最后多了个空行。改了下空行出现的位置,AC了。不得不说UVA判的真严。

#include<stdio.h>
char s[10][10];
int  num[10][10];
int main()
{
int  r, c, i, j, sign=1;
while(scanf("%d", &r))
{
if(r==0)
break;
scanf("%d",&c);
int count=0;
for( i=0; i < r; i++)
scanf("%s",s[i]);
for( i=0; i<r; i++)
for( j=0; j<c; j++)
{
if(i==0&&s[i][j]!='*')
num[i][j]=++count;
else if((j==0&&s[i][j]!='*')||(s[i][j-1]=='*'&&s[i][j]!='*')||(s[i-1][j]=='*'&&s[i][j]!='*'))
num[i][j]=++count;
}
if(sign!=1)
printf("\n");
printf("puzzle #%d:\n",sign);
printf("Across\n");
for( i=0; i<r; i++)
for( j=0; j<c; j++)
{
if( s[i][j]!='*')
{
printf("%3d.",num[i][j]);
int n;
for( n=j; ; n++)
{
printf("%c",s[i]
);
if(s[i][n+1]=='*'||n==c-1)
break;
}
printf("\n");
j=n;
}
}
printf("Down\n");
for( i=0; i<r; i++)
for( j=0; j<c; j++)
{
int n;
if(i==0&&s[i][j]!='*')
{
printf("%3d.",num[i][j]);
for( n=i; ; n++)
{
printf("%c",s
[j]);
if(s[n+1][j]=='*'||n==r-1)
break;
}
printf("\n");
}
if( s[i][j]!='*'&& s[i-1][j]=='*'&&i!=0)
{
printf("%3d.",num[i][j]);
for( n=i; ; n++)
{
printf("%c",s
[j]);
if(s[n+1][j]=='*'||n==r-1)
break;
}
printf("\n");
}
}
sign++;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: