題意:給出w*h的網格,相當於迷宮,有大寫字母和小寫字母,算出小寫字母走到大寫字母狀態時的最少步數。
思路:建立新圖,然後再bfs。
1 #include2 #include3 #include4 #include5
using
namespace
std;67
const
int maxn = 16 * 16;8
9char map[20][20
];10
intw, h, n;
11int cnt; //
非#結點個數
12int
x[maxn], y[maxn];
13int s[3], t[3]; //
記錄初末位置
14int deg[maxn]; //
記錄每個格仔相連的格仔數
15int g[maxn][maxn]; //
記錄每個格仔可以走的位置
16int new_map[20][20]; //
新圖17
int d[maxn][maxn][maxn]; //
記錄步數
1819
int dx = ;
20int dy = ;
2122
int id(int x, int y, int z) //
二進位制壓縮儲存,方便進出佇列
2326
27bool judge(int a, int b, int a2, int
b2)28
3132
void
bfs()
3350
for (int i = 0; i < deg[a]; i++)
5166}67
}68}69
}707172
intmain()
7395}96
}9798for (int i = 0; i < cnt; i++)
99106
}107
108//
如果不滿三個鬼,強行新增結點使之構成三個結點
109110
if (n <= 2) //
新增虛擬結點
111114
if (n <= 1
)115
118119
bfs();
120}
121return0;
122 }
BFS特訓 萬聖節後的早晨(UVA1601)
解題思路 直接bfs列舉會存在大量重複的判斷,題目中明示每4個至少有乙個 且圖中空格 部分形成連通塊,故可以將能夠行走的路徑單獨抽離出來。這裡可以利用vector陣列的方式,每個位置連線可以行走的下乙個位置,以此進行遍歷。另一點即是可以將x,y座標轉換成一維的整數,方便查詢。題目描述 小寫字母a,b...
2018 10 3 萬聖節的快遞
lazyjazz還是小白菜的時候 棧就好比乙個垃圾桶 chxer 今天 lazyjazz的1月1日大買特買的訂單今天 11月1日 終於到貨了,演算法 sf 快遞公司把lazyjazz訂單裡所有的快件分到了兩列火車上,一列上午到站,一列下午到站。收到通知的lazyjazz無比激動,開上了他花了半年時間...
萬聖節的小L
萬聖節的小l 題目描述 今天是萬聖節,小l同學開始了一年一度的討要糖果遊戲,但是在剛剛過去的比賽中小有成就的他打算給自己增加一點難度 如果沒有討到每一家的糖果就算輸。已知小l共有n n不大於10000 個鄰居,他們都在同一條街上 可以近似看成一條直線 第i個鄰居的座標是xi。l同學的媽媽會在一開始把...