您的位置:首页 > 其它

Uva-232 - Crossword Answers-AC

2015-02-03 14:37 176 查看
水题,读懂题,注意格式(不是第一组数据的就在输入与输出之间加空行),一遍A。

AC代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char grid[15][15];
int a,b,i,j,k,t=0,n[15][15];
while(scanf("%d",&a)&&a!=0)
{
scanf("%d",&b); getchar();
for (i=0;i<a;i++)
gets(grid[i]);
k=0; memset(n,0,sizeof(n));
for (i=0;i<a;i++)
for (j=0;j<b;j++)
{
if (i==0&&grid[i][j]!='*')
n[i][j]=++k;
else if (j==0&&grid[i][j]!='*')
n[i][j]=++k;
else if (grid[i][j-1]=='*'&&grid[i][j]!='*')
n[i][j]=++k;
else if (grid[i-1][j]=='*'&&grid[i][j]!='*')
n[i][j]=++k;
}
if (t) putchar('\n');
printf("puzzle #%d:\nAcross\n",++t);
for (i=0;i<a;i++)
for (j=0;j<b;j++)
{
if (n[i][j]&&(j==0||grid[i][j-1]=='*'))
{
printf("%3d.",n[i][j]);
for (k=j;k<b&&grid[i][k]!='*';k++)
putchar(grid[i][k]);
putchar('\n');
}
}
printf("Down\n");
for (i=0;i<a;i++)
for (j=0;j<b;j++)
{
if (n[i][j]&&(i==0||grid[i-1][j]=='*'))
{
printf("%3d.",n[i][j]);
for (k=i;k<a&&grid[k][j]!='*';k++)
putchar(grid[k][j]);
putchar('\n');
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: