原创 每週一道算法題012:最長公共子序列

問題: 如果兩個單詞很像,其實是他們有更長的公共子序列。求以下幾組單詞的最長公共子序列的長度 1.fish和fosh2.recommend和reccommend3.fish和vista 思路: 與最長公共子串很類似,但子序列遇到不同的字符時

原创 每週一道算法題013:電影推薦

問題: A、B、C三位用戶都喜歡看電影,他們給自己所喜歡的電影類型打瞭如下的分: A B C 喜劇片 3 4 2 動作片 4 3 5 生活片 4 5 1 恐怖片 1 1 3 愛情片 4 5 1 B用戶喜

原创 每週一道算法題011:最長公共子串

問題: 求以下幾組單詞的最長公共子串的長度1.fish和fosh2.fish和hish3.fish和vista 思路: 可以用表格法,橫縱座標分別是兩個單詞,如果字符相同,就用左上角的數字加1,最後取表格中的最大值。 解答: php: <?

原创 golang中slice處理遇到的一個關於引用的坑

前兩天在解掃地機器人算法的問題時,遇到一個坑 部分代碼如下: func move2(startPoint Point) [][]Point { allFootPrint := [][]Point{{startPoint}}

原创 每週一道算法題010:掃地機器人路徑統計

問題: 假設有一款不會反覆清掃同一個地方的機器人,它只能前後左右移動。舉個例子,如果第1次向後移動,那麼連續移動3次時,就會有以下9種情況(圖6)。又因爲第1次移動可以是前後左右4種情況,所以移動3次時全部路徑有9×4=36種。 求這個機

原创 每週一道算法題009:找二進制對稱的日期

題目: 把年月日表示爲YYYYMMDD這樣的8位整數,然後把這個整數轉換成二進制數並且逆序排列,再把得到的二進制數轉換成十進制數,求與原日期一致的日期。求得的日期要在上一次東京奧運會(1964年10月10日)到下一次東京奧運會(預定舉辦日期

原创 每週一道算法題008:考拉茲猜想

問題: 考拉茲猜想 對自然數n循環執行如下操作。 •n是偶數時,用n除以2 •n是奇數時,用n乘以3後加1 如此循環操作的話,無論初始值是什麼數字,最終都會得到1(會進入1 → 4 → 2 → 1這個循環)。 現在設定初始值爲偶

原创 每週一道算法題:兌換零錢

問題: 已知可兌換的零錢種類有1元,5元,10元,20元4種,現在有100塊錢要換成零錢且總數量少於15張,有幾種換法?分別是什麼? 思路: 已知有[1,5,10,20]這樣的一個可選數據集S,現在要從中取出n個數,每個數的張數爲a,使得a

原创 每週一道算法題006:抽籤組合

問題: 有如下3支隊伍,每個隊伍都有2名隊員。team1:A,B;team2:C,D;team3:E,F; 現在每個隊出1個人,組成一個隊去探險,請列出所有的組隊方式。 思路: 這就是一個組合的問題,每個隊裏挑一人,那麼總共應該有222=8

原创 每週一道算法題005:切木棒

問題: 假設要把長度爲n釐米的木棒切分爲1釐米長的小段,但是1根木棒只能由1人切分,當木棒被切分爲3段後,可以同時由3個人分別切分木棒。求最多有m個人時,最少要切分幾次。 譬如n=8,m=3時如下圖所示,切分4次就可以了。 求當n=20,m

原创 每週一道算法題004:揹包

問題: 假設你要去野營。你有一個容量爲6磅的揹包,需要決定該攜帶下面的哪些東西。其中每樣東西都有相應的價值,價值越大意味着越重要: •水(重3磅,價值10); •書(重1磅,價值3); •食物(重2磅,價值9); •夾克(重

原创 每週一道算法題003:翻牌

問題: 有100張寫着數字1~100的牌,並按順序排列。最開始所有牌都是背面朝上放置。某人從第2張牌開始,隔1張牌翻牌。然後第2, 4, 6, …,100張牌就會變成正面朝上。接下來,另一個人從第3張牌開始,隔2張牌翻牌(原本背面朝上的,翻

原创 每週一道算法題002:四則運算

問題: 求位於1000~9999,滿足如下條件的數: 各位數字間加入四則運算符,也可省略,使得按四則運算計算的結果爲原數字的各位數逆序排列。 例如:351 → 3×51 = 153 思路: 遍歷1000-9999所有的數字,切分並組合運算符

原创 golang中用鏈表實現棧

node通過prev字段進行關聯,stack維護棧頂節點 stack.go package stack type Stack struct { top *node length int } type node st

原创 用golang實現的單向鏈表

複習一下數據結構,用golang來實現單向鏈表 package main import "fmt" type Object interface{} type Node struct { Data Object next