题目描述:
题目描述:
很水,,只要注意输入输出格式
AC代码:
/*
by_superxd
time_2016年9月22日 21:01:16
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
using namespace std;
#define LIM ((i==0)||(j==0)||(map[i-1][j]=='*')||(map[i][j-1]=='*'))
int n,m,sx,sy,cnt,cas;
char map[1005][1005];
int v[1005][1005];
int main()
{
cas=1;
while(1)
{
scanf("%d",&n);//n行m列
if(!n)
break;
scanf("%d",&m);
cnt=1;
getchar();
memset(v,0,sizeof(v));
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
scanf("%c",&map[i][j]);
if(map[i][j]!='*'&&LIM)
v[i][j]=cnt++;
}
getchar();
}
if(cas!=1)
printf("\n");
printf("puzzle #%d:\n",cas++);
printf("Across\n");//行
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(v[i][j]&&(j==0||map[i][j-1]=='*'))
{
printf("%3d.",v[i][j]);
for(int k=j;k<m;k++)
{
if(map[i][k]!='*')
{
printf("%c",map[i][k]);
if(k==m-1)
printf("\n");
}
else
{
printf("\n");
j=k;
break;
}
}
}
}
}
printf("Down\n");//列
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(v[i][j]&&(i==0||map[i-1][j]=='*'))
{
printf("%3d.",v[i][j]);
for(int k=i;k<n;k++)
{
if(map[k][j]!='*')
{
printf("%c",map[k][j]);
if(k==n-1)
{
printf("\n");
}
}
else
{
printf("\n");
break;
}
}
}
}
}
}
return 0;
}