签到不签到他们说了不算
原题链接https://nuoyanli.com/contest/25/problem/D
因为要的是矩形
首先判断矩形的左上角及右下角的坐标
然后将坐标内的位置 * 改为 .
**.**改为 *
注意每个图形后面有一个空行
不知道为什么我用了结构体来写没有用二维╮(╯▽╰)╭
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
struct node
{
char a[1005];
}stu[1000];
int main()
{
long long nn,i,j;
long long z,x,c,v;
while(~scanf("%lld",&nn))
{
for(i=0;i<nn;i++)
{
memset(stu[i].a,0,sizeof(stu[i].a));
}
for(i=0;i<nn;i++)
{
scanf("%s",stu[i].a);
}
z=0;
x=0;
for(i=0;i<nn;i++)
{
long long n=strlen(stu[i].a);
for(j=0;j<n+1;j++)
{
if(stu[i].a[j]=='*')
{
if(z<=i)
{
z=i;
}
if(x<=j)
{
x=j;
}
}
}
}
c=11111;
v=11111;
for(i=0;i<nn;i++)
{
long long n=strlen(stu[i].a);
for(j=0;j<n+1;j++)
{
if(stu[i].a[j]=='*')
{
if(c>=i)
{
c=i;
}
if(v>=j)
{
v=j;
}
}
}
}
for(i=c;i<=z;i++)
{
for(j=v;j<=x;j++)
{
if(stu[i].a[j]!=42)
{
stu[i].a[j]=42;
}
else
{
stu[i].a[j]=46;
}
}
}
for(i=0;i<nn;i++)
{
printf("%s\n",stu[i].a);
}
printf("\n");
}
return 0;
}