BFS特訓 萬聖節後的早晨(UVA1601)

2021-08-25 08:49:04 字數 831 閱讀 8392

解題思路:直接bfs列舉會存在大量重複的判斷,題目中明示每4個至少有乙個#,且圖中空格『 』部分形成連通塊,故可以將能夠行走的路徑單獨抽離出來。這裡可以利用vector陣列的方式,每個位置連線可以行走的下乙個位置,以此進行遍歷。另一點即是可以將x,y座標轉換成一維的整數,方便查詢。

題目描述:小寫字母a,b,c到大寫字母a,b,c需要走的最少次數。每次a,b,c都可以移動,每個都可以上下左右移動。前提是任意兩個不能移動至同一位置,且不允許一步之內替換位置。

#include#include#include#include#includeusing namespace std;

const int maxn=20;

int s[maxn],t[maxn];

char maze[20][20]; //記錄圖形

vector a[305]; //使用vector記錄每個空格相鄰可以走的座標

int x[300],y[300],id[20][20];//id用來儲存x,y座標轉換成整數,x,y陣列儲存對應id的x,y座標

int dis[300][300][300]; //三維陣列記錄到某一種a,b,c位置下走的步數

int go[5][2]=;

int countbfs;

bool conflict(int a1,int b1,int a2,int b2) //判斷a,b各走一步後是否落在同一點或替換位置

int bfs(int a,int b,int c)}}

}} cout

}

UVa 1601 萬聖節後的早晨

題意 給出w h的網格,相當於迷宮,有大寫字母和小寫字母,算出小寫字母走到大寫字母狀態時的最少步數。思路 建立新圖,然後再bfs。1 include2 include 3 include4 include5 using namespace std 67 const int maxn 16 16 8 ...

2018 10 3 萬聖節的快遞

lazyjazz還是小白菜的時候 棧就好比乙個垃圾桶 chxer 今天 lazyjazz的1月1日大買特買的訂單今天 11月1日 終於到貨了,演算法 sf 快遞公司把lazyjazz訂單裡所有的快件分到了兩列火車上,一列上午到站,一列下午到站。收到通知的lazyjazz無比激動,開上了他花了半年時間...

萬聖節的小L

萬聖節的小l 題目描述 今天是萬聖節,小l同學開始了一年一度的討要糖果遊戲,但是在剛剛過去的比賽中小有成就的他打算給自己增加一點難度 如果沒有討到每一家的糖果就算輸。已知小l共有n n不大於10000 個鄰居,他們都在同一條街上 可以近似看成一條直線 第i個鄰居的座標是xi。l同學的媽媽會在一開始把...