簡單演算法謎題與解的個人想法

2021-09-01 06:31:24 字數 2780 閱讀 8126

抽屜裡有20只手套,其中5双是黑色的,3雙棕色和2雙灰色的。你只能在黑暗中挑手套,並且只有將手套挑出之後才能檢查其顏色。最少要挑幾次才能滿足以下條件?

至少挑出一雙顏色相同的手套。

所有顏色的手套都至少挑選出一雙匹配的。

解:(a)由於手套分左右手,所以最壞情況是前十次都為同一隻手,第十一次則必定能匹配成功。所以最少為11次。

同樣考慮最壞情況,前十八次拿五雙黑色和三雙棕色以及同一隻手的灰色,則第十九次一定會匹配成功。

找出所有將乙個矩形分成n個直角三角形的方法(n>1)。並且將這種切割的方法歸納成乙個演算法。

解1.當n為2時沿矩形對角線切割可分為兩個直角三角形,當n>2時,垂直於對角線的切割每次都會增加乙個直角三角形,則n-2刀每次都會增加乙個三角形。

解2.若n為偶數,先將矩形切割為n/2個需平行於邊線切割n/2-1次,然後將n/2個矩形切割為n個直角三角形。若n為奇數可先將矩形切割為n-1個直角三角形再垂直於斜邊切割。

25個士兵組成的小分隊要渡河,可是河水寬且深,周圍也沒有橋。他們發現河岸邊有乙個小船,兩個12歲的小男孩正在上面玩耍。船很小,僅能承載兩個男孩或乙個士兵的重量。士兵應該如何渡河?在你用的演算法中,船從乙個岸邊到另乙個岸邊要來回共計幾次?

解:利用狀態圖

每個迴圈可以送一名士兵過去,送25名士兵共需要往返100次。

怎樣才能將圖中左邊的數字陣列變換成右邊的樣子?要求只能對陣列做行交換和列交換。

解:不能 根據行交換和列交換的原則,可以看出其實交換之後行的數字是不會有變化的,只會位置改變。根據不變數的方法。

乙個小女孩正在用左手手指數數,從1到1000。她從拇指算作1開始數起,然後,食指為2,中指為3,無名指為4,小指為5接下來調轉方向,無名指算作6,中指為7,食指為8,大拇指為9,接下來食指為10,如此反覆。問如果按照這種方式數下去,最後結束時是停在哪個手指上?

解:由於給定演算法可知,除前五個數字之外之後的數字八個為一次迴圈,八個分別為奇數情況下的無 中 食 拇和偶數情況下的食 中 無 小。1000-5=995 ,995/4=293,,995%4=3 由於293為奇數則規則為無 中 食 拇,餘數為3則最後為食指。

四個人打算過一座吊橋,開始是他們都位於一側。天很黑,四個人手裡只有乙個手電筒。該橋一次最多只能同時通過兩個人,無論是乙個人還是兩個人過橋都需要攜帶手電筒看路,而且手電筒只能通過人攜帶過橋的方式傳遞。第1個人過橋只需要1分鐘,第2個人需要2分鐘,第3個人需要5分鐘,第4個需要10分鐘。由於速度不同兩個人過橋以速度慢的為準。例如,如果第1人和第4人一起過橋,兩人到達對岸需要10分鐘,如果讓4號走回來返還手電筒,則還需要10分鐘,這一共就花費了20分鐘。問他們四人能在17分鐘 內過橋麼?

解:先讓1和2過橋花費兩分鐘,然後1帶手電筒回來花費一分鐘,3和4出發花費十分鐘,2回來接1花費四分鐘。一共花費2+1+10+4=17。

不能用貪心演算法解。

有一片500片的拼圖,假定一『組』拼圖是一片或多片已經拼接起來的拼圖的組合,一次『拼接』表示將兩『組』拼圖拼在一起。問完成整個拼圖共需要做多少次『拼接』?

解:不論是兩兩拼接,然後四四拼接以此類推還是開始兩片拼在一起一片片新增結果都是相同的都為499。第二種更好理解,除第一次之外的498次都是每片拼接一次。

圖為一張10x10的**,**的對角線上是一系列重複的數字,試心算出表中所有數字的總和。

解:總結規律:**左上角的1加右下角的19為20,相鄰的2和18的和也為20。以此總結除對角線數字為10的這一斜線上的數字外,可把**做乙個摺疊,和都為20。**總數為10x10=100,除去數字為10的10個數字外,其餘和為45x20=900。再加上10x10=100,結果為1000.

有8枚外觀完全一致的硬幣,其中的一枚是假幣,並且知道假幣要比真幣輕一些,可以使用天平但不能用砝碼,問最少稱幾次才能把假幣辨別出來?

解:答案為兩次。第一次拿出6個硬幣分成兩堆上天平稱重,如果等重則稱其餘兩個硬幣,哪個輕則為假幣。如果不等重則稱量輕的中的兩個就能區分出哪個為假幣。

有10堆10枚外觀完全一致的硬幣,,其中有一堆全都是假幣,其他各堆中的硬幣都是真幣。所有的真幣重量都是10克,假幣則重11克。你有一把示數可讀的秤,可以稱出任意數目硬幣的實際重量。問最少稱幾次才能將全部都是假幣的那堆硬幣辨別出來?

解:先為十堆硬幣編號,從一編到十,從編號為一里拿乙個硬幣,從編號為二里拿出兩個硬幣,以此類推。共為55個硬幣,用示數減去550結果就是假幣的編號。

能否用單位長度2x1的多公尺諾牌將8x8的方格陣鋪滿?裡面不包含由兩張2x1多公尺諾並行排列而成的2x2的正方形。

解: 不能

由於要求不允許包含2x1多公尺諾組成的2x2的正方形,所以只能一橫一豎的排列。從不變數考慮,從左上角開始排布(具有對稱性),對角線上豎行的2x1多公尺諾牌7塊加上最開始的1塊橫多公尺諾牌填滿方格陣的縱方向,而右下角橫方向剩餘1所以必定會出現兩塊多公尺諾牌。

圖代表一座城市的地圖,所有道路橫平豎直。試找出從a點到b點所有最短路徑的總數。需要注意的是,圖中黑色的部分是被欄杆包圍起來的部分,所有能穿越該區域的路徑都被堵塞住了。

解:

LZW演算法的個人理解與簡單Python實現

參考 我是參照他括號裡給出不同的實現,即 string string character 和 character first character in string 參考博文對lzw演算法的解釋比較詳細。所以這裡我只談談我個人是如何理解這個演算法。表達不是很清晰,請原諒。壓縮過程不難理解。我主要說說...

關於聚類演算法的一些個人想法

現在的專案是在做的超大規模的矩陣的奇異值分解,其目的是對資料進行求特徵值,做為聚類演算法的輸入 因為很久以前就想過聚類單詞,所以對聚類演算法比較感興趣。目前只聽說了k means演算法,大概的思想就是,把每個資料看做向量空間中的點,然後進行聚類。問題是怎麼得到這個資料的表示向量。做奇異值分解的目的就...

A 演算法可行解與最優解的偏離處

a 尋路初探 f g h g的計算依賴於來自每個格仔與相鄰8個方向格仔的距離d,文中不同格仔的d1 8相同。如果s到v的最短路徑g是準確的,那麼最終獲得的最短路徑就是準確的,因為終點的g就是所求的最短路徑。任何情況第一和第二個加入關閉列表的g都是準確的,即其v到s的最短路徑是最優解。第三個開始才有可...