30求助!!
查看原帖
30求助!!
561043
足球小子楼主2022/10/4 09:27
#include<bits/stdc++.h>
using namespace std;
char c[10][10];
bool b[10][10];
void change(char cc,int x,int y)
{	
	//战车 
	if(cc=='R')
	{
		//行 
		for(int i=y+1;i<=8&&c[x][i]=='.';i++) 
			b[x][i]=0;		
		for(int i=y-1;i>=1&&c[x][i]=='.';i--) 
			b[x][i]=0;
		//列	
		for(int j=x+1;j<=8&&c[j][y]=='.';j++) 
			b[j][y]=0;		
		for(int j=x-1;j>=1&&c[j][y]=='.';j--) 
			b[j][y]=0;	
	}
	//主教 
	if(cc=='B')
	{
		//左上 
		for(int i=x,j=y;i>=1&&j>=1;i--,j--)
			b[i][j]=0;
		//右上	
		for(int i=x,j=y;i>=1&&j<=8;i--,j++)
			b[i][j]=0;
		//左下	
		for(int i=x,j=y;i<=8&&j>=1;i++,j--)
			b[i][j]=0;
		//右下	
		for(int i=x,j=y;i<=8&&j<=8;i++,j++)
			b[i][j]=0;
	}
}
int main(){
	//freopen("ch.in","r",stdin);
	//freopen("ch.out","w",stdout);
	for(int i=1;i<=8;i++)
		for(int j=1;j<=8;j++)
		{
			cin>>c[i][j];
			if(c[i][j]=='.') 
				b[i][j]=1;
		}	
	for(int i=1;i<=8;i++)
		for(int j=1;j<=8;j++)
			if(c[i][j]!='.')
				change(c[i][j],i,j);
	for(int i=1;i<=8;i++)
	{	
		for(int j=1;j<=8;j++)
			cout<<b[i][j];	
		puts("");		
	}
	return 0;
}
2022/10/4 09:27
加载中...