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 動態規劃 ...