#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int tag[12][12];
char word[12][12];
bool flag[12][12];
int r,c,num;
int cas=0;
int main()
{
while(scanf("%d",&r)==1&&r!=0)
{
cas++;
if(cas!=1) cout<<endl;
num=0;
memset(tag,0,sizeof(tag));
memset(word,0,sizeof(word));
scanf("%d",&c);
for(int i=0;i<r;i++)
{
for(int j=0;j<c;j++)
{
cin>>word[i][j];
if((i==0||j==0)&&word[i][j]!='*') tag[i][j]=++num;
else if((word[i][j-1]=='*'||word[i-1][j]=='*')&&word[i][j]!='*') tag[i][j]=++num;
}
}
memset(flag,false,sizeof(flag));
cout<<"puzzle #"<<cas<<":"<<endl<<"Across"<<endl;
for(int i=0;i<r;i++)
{
int j=0;
while(j<c)
{
if(tag[i][j]!=0)
{
printf("%3d.",tag[i][j]);//cout<<" "<<tag[i][j]<<".";
while(word[i][j]!='*'&&j<c)
{
cout<<word[i][j];
j++;
}
cout<<endl;
}
else j++;
}
}
cout<<"Down"<<endl;
for(int i=0;i<r;i++)
{
int j=0;
int k=i;
while(j<c)
{
if(tag[i][j]!=0&&flag[i][j]==false)
{
printf("%3d.",tag[i][j]);//cout<<" "<<tag[i][j]<<".";
while(word[i][j]!='*'&&i<r)
{
cout<<word[i][j];
flag[i][j]=true;
i++;
}
cout<<endl;
j++;
i=k;
}
else j++;
}
}
}
}
感觉自己的做法还是有点蠢