CCF第四題思考

2021-09-02 09:47:20 字數 711 閱讀 7836

當可以隨意選擇兩個節點的時候它是貪心法(哈夫曼),當只能選相鄰節點時,它變成了動態規劃,

為什麼只能選相鄰節點呢,因為只要從左到右選葉結點,得到的就是字典序,而我之前的想法是,先構造出哈夫曼樹,再把葉結點代表的編碼從左到右賦給abcde,但是哈夫曼樹可以有很多顆,哪一顆才是字典序最小的呢,這就很難。為何不換種思考,先把葉結點從左到右賦給abcde,再每次取相鄰節點來構造樹,這樣就不會破壞abcde的順序,能保證abcde對應的葉結點始終是從左到右排列的,動態規劃就是遍歷+分治+遞迴

鐵路修建題:

其實可以理解為,從1到n這條路徑中的最大路段與其他方案比要最小,因為這條路徑何時完工取決於耗時最長的那段,木桶理論,可以用貪心法,就是半截子的最小生成樹,kruskal,原本的最小生成樹的終止條件是所有點都連通(都在乙個並查集中),

而這裡只需要1和n連通即可,所以每次取最短的邊,直到1和n在同乙個並查集中,這就是貪心。

201604-4 遊戲:

我當時考慮的是從當前點,分別走上下左右四個方向然後遞迴,但沒想到這樣其實是dfs,遞迴訪問就是dfs,dfs就是遞迴,而要考慮最短的話,其實就是要樹層次最小,就是要層序遍歷,其實就是bfs,不然用dfs層數可能會無限大,而bfs只要已找到就立即return,這樣找到的絕對就是層數最小的,而bfs是遞推,用了遞迴就不是bfs了,

第四題 替換空格

可以使用這樣的方法 先遍歷一遍字串,求出字串中空格的個數,由此,可以計算出替換之後的字串的總長度,然後標記出字串的末尾p1和替換之後的末尾p2。再逐步往前移動p1,p2,同時將p1資料複製到p2的位置中,如果p1指向了乙個空格,則將p1往前移動一格,p2的位置依次插入 0 2 並往前移動。當空格替換...

2018暑假第四題

題目 判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。python 示例 1 輸入 121輸出 true示例 2 輸入 121輸出 false解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10輸出 false解釋 ...

程式設計素養第四題

頁面上輸入乙個年份 需驗證 判斷是否是閏年 能被4整除,卻不能被100整除的年份,能被400整除的是閏年 並且在頁面上顯示相應提示資訊。閏年title charset utf 8 head 請輸入年份 year type text check span form var input document...