10. Codeup 묘지 에서 B - DFS 또는 BFS 를 널리 검색 합 니까?【2019.12.18】
#include
#include
#include
#include
#include
using namespace std;
int sx,sy,ex,ey;
char ma[8][8];//
int dir[9][2]={{0,1},{0,-1},{1,0},{-1,0},{1,1},
{-1,-1},{1,-1},{-1,1},{0,0}};//
struct node//BFS
{
int x,y;//
int step;
}s;
node now,nex;// 2 ,
int judge(int x,int y)//
{
if(ma[x][y]=='S')
return 0;
if(x>7||x<0||y<0||y>7)
return 0;
return 1;
}
void change()//
{
for(int i=7;i>=0;i--)
for(int j=7;j>=0;j--)
if(ma[i][j]=='S')
{
ma[i][j]='.';
if(i<=6)
ma[i+1][j]='S';
}
}
void bfs(int c)
{
int flag=0;//
queue<node>q;//BFS
s.x=sx,s.y=sy,s.step=0;
q.push(s);//
int level=0;
while(!q.empty())
{
now=q.front();//
if(now.step!=level)
{
change();
level=now.step;
}
if(ma[now.x][now.y]=='S')//
{
q.pop();
continue;//
}
if(now.step==8)// ,
{
flag=1;
break;
}
q.pop();//
for(int i=0;i<9;i++)//
{
if(judge(now.x+dir[i][0],now.y+dir[i][1])==1)
{
nex.x=now.x+dir[i][0];
nex.y=now.y+dir[i][1];
nex.step=now.step+1;
q.push(nex);
}
}
}
if(flag==0)
printf("Case #%d: No
",c);
else
printf("Case #%d: Yes
",c);
}
int main()
{
int t,cnt=1;
scanf("%d",&t);
while(t--)
{
for(int i=0;i<8;i++)
scanf("%s",ma[i]);
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
{
if(ma[i][j]=='U')
sx=i,sy=j;
if(ma[i][j]=='A')
ex=i,ey=j;
}
}
bfs(cnt++);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.