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