程式設計師的演算法趣題Perl版 (二)

2021-08-10 03:26:53 字數 2148 閱讀 6334

竟然一月一更。。。

第四題

假設一根木棒n厘公尺,需要切分為一厘公尺長的木棒,每根木棒只可以乙個人切,木棒切成兩根可以兩個人切;

求:n厘公尺長木棒,m個人最少要切幾次,比如n=8,m=3,則需要切4次。

#! perl

#20170930

#use strict;

sub cut elsif($currentparts

<= $num) else }my

$res1 = &cut(20, 3, 1);

my$res2 = &cut(100, 5, 1);

print

$res1, "\n";

print

$res2, "\n";

n=100,m=5 答案為22

n=20,m=3 答案為8

第五題

1000日元兌換,可以兌換為10元、50元、100元、500元的硬幣。

要求兌換的硬幣數不超過15個。

#! perl

#20171010

use strict;

my$y10 = 0;

my$y50 = 0;

my$y100 = 0;

my$y500 = 0;

for($y10 = 0; $y10

<= 15; $y10 ++ )

}} }}

}

答案:

10yaun : 0 50yuan 0 100yuan 0 500yuan 2

10yaun : 0 50yuan 0 100yuan 5 500yuan 1

10yaun : 0 50yuan 0 100yuan 10 500yuan 0

10yaun : 0 50yuan 2 100yuan 4 500yuan 1

10yaun : 0 50yuan 2 100yuan 9 500yuan 0

10yaun : 0 50yuan 4 100yuan 3 500yuan 1

10yaun : 0 50yuan 4 100yuan 8 500yuan 0

10yaun : 0 50yuan 6 100yuan 2 500yuan 1

10yaun : 0 50yuan 6 100yuan 7 500yuan 0

10yaun : 0 50yuan 8 100yuan 1 500yuan 1

10yaun : 0 50yuan 8 100yuan 6 500yuan 0

10yaun : 0 50yuan 10 100yuan 0 500yuan 1

10yaun : 0 50yuan 10 100yuan 5 500yuan 0

10yaun : 5 50yuan 1 100yuan 4 500yuan 1

10yaun : 5 50yuan 1 100yuan 9 500yuan 0

10yaun : 5 50yuan 3 100yuan 3 500yuan 1

10yaun : 5 50yuan 5 100yuan 2 500yuan 1

10yaun : 5 50yuan 7 100yuan 1 500yuan 1

10yaun : 5 50yuan 9 100yuan 0 500yuan 1

10yaun : 10 50yuan 0 100yuan 4 500yuan 1

第六題

改版考拉茲猜想

n為偶數時 用n除以2

n位奇數時 用n乘以3再加1

如此迴圈操作,無論n為多少最後都是1

改版:

當初始值為偶數時,則執行n乘以3再加1,之後按照上述操作。

求10000以內可以得到初始值的偶數(比如2、4)個數

#! perl

#20171031

use strict;

my$res = 0;

for(my

$i = 0; $i

< 10000; $i += 2) else

if($j == $i && $j != 1) elsif($j == 1)

}}print

"sum is ", $res, "\n";

答案為34個

100 的程式設計師都想挑戰的演算法趣題!

計算機的世界每天都在發生著深刻的變化。新作業系統的發布 cpu效能的提公升 智慧型手機和平板電腦的流行 儲存介質的變化 雲的普及 這樣的變化數不勝數。在這樣日新月異的時代中,演算法 是不變的重要基石。要編寫高效率的程式,就需要優化演算法。無論開發工具如何進化,熟識並能靈活運用演算法仍然是對程式設計師...

程式設計師的演算法趣題 Q3翻牌

這裡有 100 張寫著數字 1 100 的牌,並按順序排列著。最開始所有牌都是背面朝上放置。某人從第 2 張牌開始,隔 1 張牌翻牌。然後第 2,4,6,100 張牌就會變成正面朝上。接下來,另乙個人從第 3 張牌開始,隔 2 張牌翻牌 原本背面朝上的,翻轉成正面朝上 原本正面朝上的,翻轉成背面上 ...

程式設計師演算法練習二

無重複字元的最長子串 給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而...