50道hdu基礎的搜尋題目

2021-07-29 23:22:50 字數 2983 閱讀 5384

dfs:

大部分是直接遞迴列舉,即求滿足約束條件下的解,雖不用剪枝,但也需要**能力。

練習遞迴列舉的題目:

1241       oil deposits (dfs的連通塊個數)

1016       prime ring problem

1584       蜘蛛牌(簡單dfs)

1426       sudoku killer(數獨)

2510       符號三角形(打表題,寫寫打表程式還是不錯的)可以先自己執行一下,執行得到結果之後交上打表**,否則會超時

2553       n皇后問題(在n較小時,是經典的練習遞迴列舉的題目)

2677       dota all stars( 單純練習遞迴的題目+串的處理 )傷不起

3350       #define is unsafe (練習遞迴的好題目)(用結構體做返回值同時返回多個引數)棧的應用

2821       pusher( 看上去有點嚇人,實際是簡單題,搜就好了 )

2782       the worm turns(實際是簡單題,搜就好了)

2616       kill the monster(bfs+位運算 或 dfs 或 stl列舉全排列,總之,就是暴力……)

3500       fling(實際是簡單題,搜就好了)

2514       another eight puzzle

1547       bubble shooter(思路是搜兩次,dfs或bfs)

1175       連連看(dfs 或 bfs)

1728       逃離迷宮(和連連看一樣)

剪枝:典型題目:

1010       tempter of the bone(標準迷宮dfs,學習剪枝的開始)

學習了: 極限情況下的剪枝

奇偶性剪枝

(從(a,b)走到(c,d) 若a+b 與 c+d 奇偶性相同,需要走偶數步;否則走奇數步)

1455       sticks(剪枝的好題目,黑書例題,坑了我好久的說)

學習了:  排序後解答樹同層避免重複搜尋

調整法(全集不行與子集肯定不行)

想法:每根小棍子都要被配對,當前情況下第一根無法配對,直接return

避免重複的題目還有:

1258       sum it up

2610       sequence one( 讓我認識了 stable_sort()  )

2611       sequence two( 在」2610 sequence one」的基礎上稍加修改即可)

bfs:

一些簡單題目:

1180       詭異的樓梯 (bfs可以加自己)

2102       a計畫

1240       asteroids! (單純的三維bfs )

1253       勝利大逃亡 (單純的三維bfs,加個剪枝: a+b+c-3>limit快了一倍)

1548       a strange lift  

2717       catch that cow

1372       knight moves(或【雙廣】也可以)

1312       red and black

2612       find a way

2531       catch him    

1252       hike on a graph

找狀態hash判重很重要

幫助我理解「狀態」的題目:

1732       push box(8維陣列hash狀態)

1429       勝利大逃亡(續)

理解:一開始不知道怎麼搜

和隊友**,讓我認識到 寬搜是很盲目,很隨意的事情

搜就好了,碰到目標節點再說

「狀態」練習題目:

1254       推箱子         ( bfs套bfs,走過的點還可以再走 )

1495       非常可樂(白書的例題—「倒水問題」)

2364       escape

2579       dating with girls(2)

1104       remainder(自己在做的過程中逐漸找到了」狀態」,和數論沾點邊)

在bfs中經常碰到這樣一類問題,加入節點的順序與佇列中節點的單調性不一致,這個時候用到優先佇列來代替普通佇列。我自己是用乙個delay(延遲標記),讓這類節點先只向自己拓展,之後再向其他節點拓展。

「延遲」相關題目:

1240       rescue (可以加自己,延遲入門)

4198       quick out of the harbour

1206       ignatius and the princess i(價效比高的寬搜題目)

2416       treasure of thechimpisland

2653       waiting ten thousand years for love

( 從這裡引入了dijkstra 最短路演算法??????? )

還有就是【雙向廣搜】

碰到了幾道可以用雙廣解決的題目,用普通bfs也可以:

1401       solitaire       (【雙廣】,用普通bfs也能過)(好題)

1195       open the lock(普通bfs,狀態,或【雙廣】)

乙個問題:

判重用陣列有時是嚴重浪費的,狀態並沒有那麼多,但為了能完全表示,浪費了很多空間,甚至開不下陣列,這個時候用hash技術……(還不太會%>_<%)

dfs&bfs:

1044       collect more jewels(好題)

這個題目提供了一種思路:

bfs預處理構造隱式圖,然後dfs列舉所有情況求出最優解

1072       nightmare(和上題同樣的思路)

1983       kaitou kid - the phantom thief (2) (好題)(dfs列舉可能情況,然後bfs判定是否可行)

50道程式設計小題目

今天在黑馬論壇上,看到了50道程式設計小題目,看了一下挺好的,就留下來,大家有時間也做做啊,做好把 和心得貼在自己部落格,大家一塊交流啊,別小看這些小題目,做大的系統也是把乙個大系統不斷的分成乙個個小模組做啊,我覺得這個很能鍛鍊邏輯思維能力,和對物件導向的理解,從題目中抽象出來類,並思考類中字段,方...

50道程式設計小題目之 完數

題目 乙個數如果恰好等於它的因子之和,這個數就稱為 完數 例如6 1 2 3.程式設計 找出1000以內的所有完數。因子 就是所有可以整除這個數的數,不包括這個數自身 python解題 a list a str list b list sums 0 sums str for i in range 2...

基礎程式設計 hdu題目分類

hdu題目分類 3301 字串 ac自動機,動態規劃 狀態壓縮 3302 計算幾何 3303 數學 代數運算 高斯消元 3304 圖論 強連通分量 2 sat 3305 動態規劃 凸單調性優化 3306 列舉 3307 貪心 3308 數學 代數運算 3309 最短路 佛洛伊德 3310 動態規劃 ...