1. 程式人生 > >【搜尋】【廣搜模板】

【搜尋】【廣搜模板】

ACM模板

C++queue的應用


struct note{  
    int x; //橫座標 
    int step;  //步數 
    int y;  //縱座標 
};  

void BFS(note front_head)//BFS   
{  
    queue<note>Q;//建立空佇列   
    Q.push(front_head);//將起始點加入佇列   

    note next_queue;//下一個佇列元素   
    note now_head;//當前隊頭元素   
    while(!Q.empty())//迴圈條件是佇列不為空   
    {  
        now_head = Q.front();//找到當前隊頭元素   
Q.pop();//已經找到則出隊 for(i = 0; i < 8; i ++)//搜尋8個方向 { next_queue.x = now_head.x + NEXT[i][0]; next_queue.y = now_head.y + NEXT[i][1]; if(next_queue.x < 0||next_queue.y <0||next_queue.x > 7||next_queue.y > 7) continue
; if(book[next_queue.x ][next_queue.y ]!= 1)//沒有走過該點 { book[next_queue.x ][next_queue.y ] = 1; next_queue.step = now_queue.step+1; Q.push(next_queue);//將找到滿足條件的下一個佇列元素加入隊尾 //如果下一個佇列元素滿足終止條件,結束函式 if
(next_queue.x == end_i&&next_queue.y == end_j) { step = next_queue.step; return; } } } } return; }