版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/decision2016/article/details/54976064
字符串的一道模拟题吧,小小的思考一下= =(虽然因为一些原因我也WA了几次)
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cstdlib>
#include<vector>
#include<queue>
#include<stack>
using namespace std;
int r,c,now = 0;
char s[100];
struct node{
char c;
int tid;
}; //结构体保存数据,也可以用两个数组一一对应
int main()
{
while(1)
{
node map[15][15];
int cnt = 1;
cin>>r;
if(r==0) break;
cin>>c;
if(now!=0) cout<<endl;
for(int i =1;i<=r;i++)
{
cin>>s;
for(int j = 1;j<=c;j++)
map[i][j].c = s[j-1];
}
for(int i = 1;i<=r;i++)
{
for(int j = 1;j<=c;j++)
{
if(map[i][j].c=='*')
{
map[i][j].tid = 0;
continue;
}
if(i-1==0||j-1==0||map[i-1][j].c=='*'||map[i][j-1].c=='*')
{
map[i][j].tid = cnt++;
}
else map[i][j].tid = 0;
}
}
printf("puzzle #%d:\nAcross\n",++now);
for(int i=1;i<=r;++i)
{
int j=1;
while(j<=c)
{
if(map[i][j].tid == 0 || map[i][j].c =='*')
{
j++;
continue;
}
printf("%3d.%c",map[i][j].tid,map[i][j].c);
j++;
while(j<=c && map[i][j].c!='*')
{
printf("%c",map[i][j].c);
j++;
}
printf("\n");
}
}
cout<<"Down"<<endl;
for(int i=1;i<=r;++i)
{
for(int j=1;j<=c;++j)
{
if(map[i][j].tid == 0 || map[i][j].c=='*')
continue;
printf("%3d.%c",map[i][j].tid,map[i][j].c);
map[i][j].tid=0;
int k=i+1;
while(k<=r && map[k][j].c!='*')
{
printf("%c",map[k][j].c);
map[k][j].tid=0;
k++;
}
printf("\n");
}
}
}
return 0;
}