洛谷月試合ソ連人について
1818 ワード
この問題については、暴力捜査で、捜査は遊びました.
この問題は体面が八皇后とよく似ているように見えますが、この問題は八皇后より簡単だと思います.いい加減にしろ
次は本題に入ります.
まず入力して、Bの点を記録して、R点を記録して、後で検索しやすいです.
次に4つの方向から検索し、現在のノードに駒がある場合は、直接スキップします.
具体的な説明はコードを参照してください.
この問題は体面が八皇后とよく似ているように見えますが、この問題は八皇后より簡単だと思います.いい加減にしろ
次は本題に入ります.
まず入力して、Bの点を記録して、R点を記録して、後で検索しやすいです.
次に4つの方向から検索し、現在のノードに駒がある場合は、直接スキップします.
具体的な説明はコードを参照してください.
#include
#include
#include
#include
using namespace std;
inline int read()
{
int x=0,f=1;
char ch=getchar();
while(ch'9')
{
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
int a[75][3],num,c[75],last[9][9];
int bx[5]={0,-1,-1,1,1},by[5]={0,-1,1,1,-1};//
int rx[5]={0,-1,0,1,0},ry[5]={0,0,1,0,-1};//
char b;
void dfs(int x,int y,int jx,int jy)
{
if(last[x+jx][y+jy]==1||x+jx<1||x+jx>8||y+jy<1||y+jy>8)// , ,
{
return ;
}
else //
{
last[x+jx][y+jy]=2;//2 ,1 。
dfs(x+jx,y+jy,jx,jy);
}
}
int main()
{
for(int i=1;i<=8;i++)
{
for(int j=1;j<=8;j++)
{
cin>>b;
if(b=='B')
{
a[++num][1]=i;//
a[num][2]=j;//
c[num]=1;//1 B
last[i][j]=1;// last[i][j] ,
}
if(b=='R')
{
a[++num][1]=i;
a[num][2]=j;
c[num]=2;//2 R
last[i][j]=1;//
}
}
}
for(int i=1;i<=num;i++)
{
if(c[i]==1)
{
for(int j=1;j<=4;j++)// B R 4
{
dfs(a[i][1],a[i][2],bx[j],by[j]);// bx,by
}
}
if(c[i]==2)
{
for(int j=1;j<=4;j++)
{
dfs(a[i][1],a[i][2],rx[j],ry[j]);// rx,ry
}
}
}
for(int i=1;i<=8;i++)
{
for(int j=1;j<=8;j++)
{
if(last[i][j]!=0)// ,
cout<