佇列模擬基本操作I

2022-05-05 18:36:14 字數 1388 閱讀 9736

看到這道題,第乙個想法就是「搜尋」!「回溯」!的確,這種思路是很正確的,bfs和dfs都可以來解決:

#include #include 

#include

using

namespace

std;

int dx[12]= ,

dy[12]= ;

intmain() ,x1,y1,x2,y2;

memset(s,

0xff,sizeof(s)); //

s陣列的初始化

int head=1,tail=1; //

初始位置入隊

que[1][1]=1

; que[

1][2]=1

; que[

1][3]=0

; cin>>x1>>y1>>x2>>y2; //

讀入黑馬和白馬的出發位置

while(head<=tail) }}

head++;

}return0;

}

咱們來模擬以下佇列的操作:

首先,初始化乙個佇列(拿腦子想出了乙個佇列……),然後,定義頭指標head和尾指標tail都為1。

如果尾指標在head的位置上或者head的前面,則這個queue不是空的或者這個佇列中的元素還沒有完全處理完。

相反,判斷乙個佇列是否為空或者其中的元素是否全部處理完畢,那就可以用 tail > head 來判斷了。

當有新的元素加入進來,舊的元素不要就可以tail+1,尾指標向上移一位。

當然,你也可以用stl的序列式容器queue,也是根據個人習慣的。

但是……

這道題有個bug。

我們不妨來倒推,它要去(1,1)這個點,我們就從(1,1)這個點去(x,y)這個位置。

當我們統計每乙個座標點都能走幾步能到達時,得到了這個圖:

可以看出當行數和列數都小於等於5的時候是沒有規律的,但當行數和列數是大於5的時候,是以兩個為單位依次遞增,也就是第

六、第七列是3,第

八、第九列是4,第

十、第十一是5……然後再在1到5之內特判一下,就可以得到了:

#include#include

#include

using

namespace

std;

intmain()

else}}

return0;

}

python模擬佇列 入出 清空佇列基本操作

佇列與棧的結構類似,但不同的是佇列的出隊操作是在隊首元素進行的刪除操作。基本原則是先進先出。用列表,列表的功能非常強大,既能模擬堆疊又能模擬佇列,出隊的時候 入隊的時候,直接在尾部加入 list如果對資料結構感興趣,可以檢視這篇博文 執念斬長河專欄資料結構 目錄 實驗效果 實驗 coding utf...

佇列基本操作

鏈式儲存 typedef int qelemtype typedef int status 具體資料型別具體定義 typedef struct qnode 佇列結點結構體 qnode,queueptr typedef struct 鏈佇列型別 linkqueue status initqueue l...

佇列的基本操作

include stdafx.h includeusing namespace std typedef struct node typedef struct queue queue insertqueue queue q,char value return q queue deletequeue q...