只有40分,是哪里出了bug(求dalao指点)
#include<bits/stdc++.h>
using namespace std;
char a[10][10];
int b[10][10];
void work()
{
for(int i=1;i<=8;i++)
{
for(int j=1;j<=8;j++)
{
if(a[i][j]=='R')
{
b[i][j]=0;
for(int k=i+1;k<=8;k++)
{
if(a[k][j]!='.')break;
else b[k][j]=0;
}
for(int k=i-1;k>=1;k--)
{
if(a[k][j]!='.')break;
else b[k][j]=0;
}
for(int k=j+1;k<=8;k++)
{
if(a[i][k]!='.')break;
else b[i][k]=0;
}
for(int k=j-1;k<=8;k++)
{
if(a[i][k]!='.')break;
else b[i][k]=0;
}
}
else if(a[i][j]=='B')
{
b[i][j]=0;
for(int k=1;k<=8-i;k++)
{
if(a[i+k][j+k]!='.')break;
else b[i+k][j+k]=0;
}
for(int k=1;k<=8-i;k++)
{
if(a[i+k][j-k]!='.')break;
else b[i+k][j-k]=0;
}
for(int k=1;k<=8-i;k++)
{
if(a[i-k][j+k]!='.')break;
else b[i-k][j+k]=0;
}
for(int k=1;k<=8-i;k++)
{
if(a[i-k][j-k]!='.')break;
else b[i-k][j-k]=0;
}
}
}
}
return ;
}
int main()
{
for(int i=1;i<=8;i++)
{
for(int j=1;j<=8;j++)
{
cin>>a[i][j];
b[i][j]=1;
}
}
work();
for(int i=1;i<=8;i++)
{
for(int j=1;j<=8;j++)cout<<b[i][j];
cout<<endl;
}
return 0;
}
测试点2,8,9,10WA了,其他AC
求dalao指点