UVa10181 - 15-Puzzle Problem(A*搜尋 )

題目大意

大家有玩過數字拼圖嗎?這題是數字拼圖,給你一個隨機生成的數字拼圖,透過上下左右的方式讓空白附近的方塊跟空白交換,操作方式如下:

如果可以在 50 步以內玩到拼圖的所有數字從左到右、從上到下都按照數字順序,那稱之為完成。並輸出從初始拼圖至最終拼圖的操作,輸出字元只能是 U,D,L,R。
P.S. 完成必須要是此圖

如果不行,輸出 “This puzzle is not solvable.”

閱讀更多...

演算法知識 - A* 搜尋

A* 介紹

A* 搜尋演算法,(A* 讀做 Astar),在圖形平面上對對多個節點路徑求出最低成本的演算法,是將 BDS 與遍地圖(Graph Travel )的改進演算法。

原理

主體還是以 BFS 為主,但多增加一個函式,啟發式搜尋(heuristic)找出最高的權重在使其進行 BFS,找出最高的權重為 \(f(x) = g(x) + h(x) \),其中 \(g(x)\) 則是從起點走到當前節點的距離,\(h(x)\) 則是啟發式搜尋,用於猜測當前節點至終點的距離。

啟發式搜尋(heuristic)

在搜尋演算法中作為效率提升的一個手段,對於當前已知的資訊或結點進行評判,並對資訊進行評分,透過評分方式來使搜尋演算法找到最優的搜尋方向。

資料來源

A* OIwiki
启发式搜索 OIwiki

UVa12502 - Three Families(數論 Math theorm )

題目大意

A,B,C 這 3 個家庭共同管理一個花園,其中有一周 C 家庭出去玩,讓 A 與 B 共同去整理花園,當 C 回來時給予一筆錢來感謝 A 與 B 一起整理花園,題目詢問 A 應該要拿到多少錢比較好?

x 為 A 家庭整理花園的時數
y 為 B 家庭整理花園的時數
z 為 C 家庭給予的錢

貼心提示

  • 假如 x 為 5、y 為 4、z 為 90,那公式並不是 \(90/(5+4)*5 = 50 \),需要仔細想想,題目不會告訴你
  • 如果用到小數點時請小心使用,建議盡量避免
閱讀更多...

UVa11875 - Brick Game (水題)

題目大意

孟加拉國對於 Brick Game 非常熱衷,最近出現了電競的賽事,隊伍的隊員數量必定是奇數,且透過年齡進行排序,可能會給遞增或遞減。需要一個隊長且隊長年齡必須是隊伍的中間值,否則會出現代溝,請輸出隊長的最適合年齡。

P.S. 隊友年齡都是獨一無二,不會有另外一個隊友與其他隊友年齡相同。

閱讀更多...

UVa11723 - Numbering Roads! (水題)

題目大意

有一個國家的道路命名方式是這樣的,透過數字 0-9 與字母 A-Z,數字配上一個字母(也可以不配)來當作一個道路的命名,類似舊高雄市XD。
給你需要命名的道路數量,可用數字為 3,告訴我們可不可以全部命名成功,且輸出可以用到最少的字母,也就是只需要用到第幾個字母就命名完全道路,如果不行請輸出 impossible。

舉例,道路有 5 條,可用數字為 2
那道路就有 1,2,1a,2a,1b,2b ,因此就輸出 2,因為用到 b

閱讀更多...
  • © 2020-2024 John Doe
  • Powered by Hexo Theme Ayer
  • PV: UV: