BFS 를 배 운 후의 작은 노트 와 위조 코드 를 적어 주세요.
1533 단어 노트
의사 코드 (내 가 이해 하 는):
/*
* ,
* ( , step)
*/
struct location{
int x; // 。
int y; // , 。
int step; // 。
};
location lo[N][N];
int cmp[] = {n1,n2,m1,m2,k1,k2,z1,z2} // , if
// 。
int flag[N][N]; // , , , 。
int bfs(){
queue q; // ;
location cur,next; // , 。 ~
int fx,fy; // , , 。
cur.x = first.x;
cur.y = first.y;
cur.step = 0; // 。
q.push(cur); // 。 。
flag[fist.x][first.y] = 1; // 。
while(!q.empty()){ // , 。
cur = q.front();
q.pop(); //cur , 。 , !
if( ){
return ; // , 。
}
// , cur next, 。
for(int i = 1; i<=x;i = i+n ){// cmp ,
fx = cmp[i-1] * xxx
fy = cmp[i] * xxx;
if(fx,fy &&flag[fx][fy]!=1&& ){
flag[fx][fy] = 1; // , ;
next.x = fx;
next.y = fy;
next.step = cur.xtep +1;
q.push(next); //
}
}
}
return 。 // , 。 。
}
hdoj 1253, hdoj 2717, hdoj 1312, hdoj 1495
나중에 새로운 아이디어 가 있 으 면 이 노트 를 업데이트 하 겠 습 니 다. 화 이 팅 ~ ~