紫薯11
看清楚题目意思简单模拟注意初始化以及格式
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <cstdio>
using namespace std;
int main()
{
int n,m;
char str[20][20];
int num[20][20];
int num1[20][20];
int fg[20][20];
int fg1[20][20];
int sum=1;
while(cin>>n&&n)
{
cin>>m;
memset(str,'\0',sizeof(str));
memset(num,0,sizeof(num));
memset(fg,0,sizeof(fg));
memset(num1,'\0',sizeof(num1));
memset(fg1,0,sizeof(fg1));
for(int i=0;i<n;i++)
{
getchar();
for(int j=0;j<m;j++)
cin>>str[i][j];
}
int cont=1;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(str[i][j]!='*')
{
if(str[i][j-1]=='*'||str[i-1][j]=='*'||i==0||j==0)
{
num[i][j]=cont;
num1[i][j]=cont;
cont++;
}
}
}
}
if(sum==1)
printf("puzzle #%d:\n",sum++);
else
{
printf("\n");
printf("puzzle #%d:\n",sum++);
}
printf("Across\n");
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(num[i][j]!=0&&fg[i][j]==0)
{
printf("%3d.",num[i][j]);
for(int z=j;z<m;z++)
{
if(str[i][z]=='*')
break;
printf("%c",str[i][z]);
fg[i][z]=1;
}
printf("\n");
}
}
}
printf("Down\n");
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(num1[i][j]!=0&&fg1[i][j]==0)
{
printf("%3d.",num[i][j]);
for(int z=i;z<n;z++)
{
if(str[z][j]=='*')
break;
printf("%c",str[z][j]);
fg1[z][j]=1;
}
printf("\n");
}
}
}
}
return 0;
}