云深时见d码 @ 2020-11-29 19:56:34
#include<bits/stdc++.h>
using namespace std;
bool vis;
int b[100][100];
int main()
{
int n,ex=0,ey=0;
cin>>n;
int a[100][100];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
cin>>a[i][j];
}
for(int i=1;i<=n;i++)
{
if(a[i][n]==0)
{
for(int j=n;j>=0;j--)
{
if(a[i][j]==0) b[i][j]=2;
else if(a[i][j]==1) break;
}
}
}
for(int i=1;i<=n;i++)
{
if(a[i][1]==0)
{
for(int j=1;j<=n;j--)
{
if(a[i][j]==0) b[i][j]=2;
if(a[i][j]==1) break;
}
}
}
for(int i=1;i<=n;i++)
{
vis=0;
for(int j=1;j<=n;j++)
{
if(a[j][i]==1) vis=1;
else if(vis==1&&a[j][i]==0&&b[j][i]!=2) b[j][i]=1;
else if(vis==1&&a[j][i]==1) vis=0;
int bb=j;
while(bb<n+1)
{
if(vis==1&&a[bb][i]==1) break;
if(bb==n&&vis==1)
{
for(int i1=1;i1<=n;i1++)
{
for(int j1=1;j1<n;j1++)
b[i1][j1]=0;
}
}
bb++;
}
for(int maxn=1;maxn<=n;maxn++)
{
for(int minn=1;minn<=n;minn++)
{
if(b[minn][maxn]==1)
a[minn][maxn]=2;
}
}
}
}
cout<<endl;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
我加了筛多余0的筛子但是一会筛一会不筛
by 云深时见d码 @ 2020-12-02 21:35:40
蒟蒻的得分升到80了
#include<bits/stdc++.h>
using namespace std;
bool vis;
int b[100][100];
int main()
{
int n,ex=0,ey=0;
cin>>n;
int a[100][100];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
cin>>a[i][j];
}
for(int i=1;i<=n;i++)
{
for(int j=n;j>=0;j--)
{
if(a[i][j]==1) break;
b[i][j]=2;
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j--)
{
if(a[i][j]==1) break;
b[i][j]=2;
}
}
for(int i=1;i<=n;i++)
{
vis=0;
for(int j=1;j<=n;j++)
{
if(a[j][i]==1) vis=1;
else if(vis==1&&a[j][i]==0&&b[j][i]!=2) b[j][i]=1;
else if(vis==1&&a[j][i]==1) vis=0;
int bb=j;
while(bb<n+1)
{
if(vis==1&&a[bb][i]==1) break;
if(bb==n&&vis==1)
{
for(int i1=1;i1<=n;i1++)
{
for(int j1=1;j1<n;j1++)
{
if(b[i1][j1]!=2)
b[i1][j1]=0;
}
}
}
bb++;
}
for(int maxn=1;maxn<=n;maxn++)
{
for(int minn=1;minn<=n;minn++)
{
if(b[minn][maxn]==1)
a[minn][maxn]=2;
}
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}