一道很简单的模拟题 啊啊啊把自己快坑死了
没有找到可以测试的窗口 过了样例和一些题目描述的特例
求大佬给个测试入口
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int mapp[45][45];
char xx[45];
int n;
typedef struct node
{
int x,y;
} ans;
ans a[1000];
int check(int i,int j,int jd)
{
if(i>n||j>n||i<0||j<0)
return 0;
else if(jd!=0&&jd!=1)
return 1;
else
return 0;
}
int anly()
{
int sum=0,s=0;
//行
for(int i=0; i<n; i++)
{
s=0;
for(int j=0; j<n; j++)
{
if(mapp[i][j]==2)
{
s++;
}
else
{
if(s>=5)
sum++;
s=0;
}
}
if(s>=5)
sum++;
}
//列
for(int j=0; j<n; j++)
{
s=0;
for(int i=0; i<n; i++)
{
if(mapp[i][j]==2)
{
s++;
}
else
{
if(s>=5)
sum++;
s=0;
}
}
if(s>=5)
sum++;
}
if(n>=5)
{
int cc=(n-5)+1;
int nx=0,ny=0;
for (int i=0; i<cc; i++)
{
//反斜杠
s=0;
if(i==0)
{
nx=0,ny=0;
while(nx<n&&ny<n)
{
if(mapp[nx][ny]==2)
{
s++;
}
else
{
if(s>=5)
sum++;
s=0;
}
nx++;
ny++;
}
if(s>=5)
sum++;
}
else
{
s=0;
nx=i;
ny=0;
while(nx<n&&ny<n)
{
//cout<<nx<<" "<<ny<<" "<<mapp[nx][ny]<<endl;
if(mapp[nx][ny]==2)
{
s++;
}
else
{
if(s>=5)
sum++;
s=0;
}
nx++;
ny++;
}
if(s>=5)
sum++;
s=0;
nx=0;
ny=i;
while(nx<n&&ny<n)
{
//cout<<nx<<" "<<ny<<" "<<mapp[nx][ny]<<endl;
if(mapp[nx][ny]==2)
{
s++;
}
else
{
if(s>=5)
sum++;
s=0;
}
nx++;
ny++;
}
if(s>=5)
sum++;
//cout<<"end"<<endl;
}
}
nx=0,ny=n-1;
for (int i=0; i<cc; i++)
{
s=0;
if(i==0)
{
nx=0,ny=n-1;
while(nx<n&&ny>=0)
{
//cout<<nx<<" "<<ny<<" "<<mapp[nx][ny]<<endl;
if(mapp[nx][ny]==2)
{
s++;
}
else
{
if(s>=5)
sum++;
s=0;
}
nx++;
ny--;
}
if(s>=5)
sum++;
}
else
{
s=0;
nx=0;
ny=n-1-i;
while(nx<n&&ny>=0)
{
// cout<<nx<<" "<<ny<<" "<<mapp[nx][ny]<<endl;
if(mapp[nx][ny]==2)
{
s++;
}
else
{
if(s>=5)
sum++;
s=0;
}
nx++;
ny--;
}
if(s>=5)
sum++;
s=0;
nx=i;
ny=n-1;
while(nx<n&&ny>=0)
{
if(mapp[nx][ny]==2)
{
s++;
}
else
{
if(s>=5)
sum++;
s=0;
}
nx++;
ny--;
}
if(s>=5)
sum++;
//cout<<"end"<<endl;
}
}
}
return sum;
}
void dis()
{
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
cout<<mapp[i][j]<<" ";
}
cout<<endl;
}
}
bool cmp1(node a,node b)
{
if(a.y!=b.y)
return a.y<b.y;
else
return a.x<b.x;
}
int main()
{
// freopen("C:\\Users\\43436\\Desktop\\wuzi\\data\\20.in","r",stdin);
// freopen("22.out","w",stdout);
// freopen("1.out","w",stdout);
while(cin>>n)
{
int cnt=0;
getchar();
for(int i=0; i<n; i++)
{
gets(xx);
for(int j=0; j<n; j++)
{
if(xx[j]=='*')
mapp[i][j]=0;
else if(xx[j]=='w')
mapp[i][j]=2;
else
mapp[i][j]=1;
}
}
int k=anly();
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
if(mapp[i][j]==0)
{
mapp[i][j]=2;
/* if(j==29&&i==5)
{
dis();
puts("");
cout<<k<<" "<<anly()<<endl;
}*/
if(k<anly())
{
a[cnt].y=i;
a[cnt++].x=j;
}
mapp[i][j]=0;
}
}
}
//dis();
sort(a,a+cnt,cmp1);
for(int i=0; i<cnt; i++)
{
cout<<a[i].x<<" "<<a[i].y<<endl;
}
}
return 0;
}