第乙個bfs題目 hdu1175連連看

2021-09-30 08:26:14 字數 2255 閱讀 4220

#include

#include

#include

using namespace std;

#define maxn 1005

//用於儲存點資訊的結構

typedef struct _node

int x, y; //座標資訊

unsigned short change; //轉彎次數資訊

int dic; //點的方向資訊

}node;

int cmap[maxn][maxn]; //儲存圖資訊

int vistied[maxn][maxn]; //記錄點是否已訪問過

int flag; //標識點是否可消除

int dir[4][2] = , , , }; //用於儲存4個方向的陣列

int m, n;

int xs, ys, xe, ye;

int legal(int x, int y); //判斷點是否合法

void bfs(int sx, int sy); //廣搜演算法

int main(void)

int i, j, q;

while (scanf("%d %d", &m, &n) && (m + n))

memset(cmap, -1, sizeof(cmap));

//構圖

for (i=1; i<=m; i++)

for (j=1; j<=n; j++)

scanf("%d", &cmap[i][j]);

scanf("%d", &q);

while (q--)

flag = 0;

memset(vistied, 0, sizeof(vistied));

scanf("%d%d%d%d", &xs, &ys, &xe, &ye);

//如果所選點值或起始點和結尾點為0則表示無法消除

if (cmap[xs][ys] != cmap[xe][ye] || cmap[xs][ys] == 0 || cmap[xe][ye] == 0)

printf("no/n");

else

bfs(xs, ys);

if (flag)

printf("yes/n");

else

printf("no/n");

return 0;

int legal(int x, int y)

if (x<0 || x>m || y<0 || y>n)

return 0;

return 1;

//廣搜演算法

void bfs(int sx, int sy)

queueque; //用於儲存合法點的佇列

node p, t;

int i;

p.x = sx; //初始化節點

p.y = sy;

p.change = 0;

p.dic = -1;

t.dic = -1;

t.change = 0;

vistied[p.x][p.y] = 1;

que.push(p); //將起始節點入隊

while (!que.empty())

p = que.front();

que.pop();

//出隊節點如果和結束節點位置相同則表示可以刪除,計算結束

if (p.x == xe && p.y == ye)

flag = 1;

break;

for (i=0; i<4; i++)

t.x = p.x + dir[i][0];

t.y = p.y + dir[i][1];

//用於改變節點轉彎次數資訊和方向資訊

if (p.dic != -1)

if (p.dic != i)

t.change = p.change + 1;

else

t.change = p.change;

else

t.change = 0;

t.dic = i;

//轉彎次數小於等於2且點合法且未被訪問過,點值為0或者該點是結束點則符合條件入隊

if (t.change <=2 && legal(t.x, t.y) && !vistied[t.x][t.y] 

&& (cmap[t.x][t.y] == 0 || (t.x == xe && t.y == ye)))

que.push(t);

vistied[t.x][t.y] = 1;

軟體大賽題目 (第乙個)Java

全國軟體大賽的題目貌似很難。今天費了兩個多小時才做出來兩個題目,悲催啊,感覺自己的水平真的不咋的啊,唉,自信心嚴重的受打擊,哈哈,好吧,慢慢練練吧,唉,悲催的我呀,下面放上第乙個題目 程式設計題 下列乘法算式中 每個漢字代表1個數字 1 9 相同的漢字代表相同的數字,不同的漢字代表不同的數字。賽軟體...

python第乙個程式設計 第乙個 Python 程式

簡述 安裝完 python 後,windows 中 開始選單或安裝目錄下就會有 idle 開發 python 程式的基本 ide 整合開發環境 幫助手冊 模組文件等。linux 中 只需要在命令列中輸入 python 命令即可啟動互動式程式設計。互動式程式設計 互動式程式設計不需要建立指令碼檔案,是...

第乙個部落格

我不知道為什麼 我在csdn上創了乙個賬號,又開通了部落格。也許我不是名人,也許幻想著成為名人。在這裡 我不會給任何人許諾,這個部落格可能有乙個博文 有兩個博文 或者會有很多 很多 很多。不過讓我有個大膽的猜想,如果這個部落格在今後有很多很多自己寫的博文,說明我成功了 在自己眼裡 也說明這個方法時正...