經典演算法題每日演練 第一題 百錢買百雞

2021-06-18 11:27:51 字數 1311 閱讀 7993

百錢買百雞的問題算是一套非常經典的不定方程的問題,題目很簡單:公雞5文錢乙隻,母雞3文錢乙隻,小雞3只一文錢,

用100文錢買一百隻雞,其中公雞,母雞,小雞都必須要有,問公雞,母雞,小雞要買多少只剛好湊足100文錢。

分析:估計現在小學生都能手工推算這套題,只不過我們用計算機來推算,我們可以設公雞為x,母雞為y,小雞為z,那麼我們

可以得出如下的不定方程,

x+y+z=100,

5x+3y+z/3=100,

下面再看看x,y,z的取值範圍。

由於只有100文錢,則5x<100 => 0好,我們已經分析清楚了,下面就可以編碼了。

1

class

program

2只,母雞:只,小雞:只

結果出來了,確實這道題非常簡單,我們要知道目前的時間複雜度是o(n2),實際應用中這個複雜度是不能讓你接受的,最多最多能讓

人接受的是o(n)。

所以說我們必須要優化一下,從結果中我們可以發現這樣的乙個規律:公雞是4的倍數,母雞是7的遞減率,小雞是3的遞增率,規律**

來,肯定需要我們推算一下這個不定方程。

x+y+z=100          ①

5x+3y+z/3=100    ②

令②x3-① 可得

7x+4y=100

=>y=25-(7/4)x          ③

又因為0x=4k                    ④

將④代入③可得

=> y=25-7k               ⑤

將④⑤代入①可知

=> z=75+3k               ⑥

要保證0

1

class

program

2只,母雞:只,小雞:只

這一次我們做到了o(n)的時間複雜度,很不錯,起碼優化到了我能接受的範圍內,或許我們感覺到了數學的魅力,是的,因為....

數學是科學的皇后。皇上自然就是物理了...

經典演算法題每日演練 第一題 百錢買百雞

百錢買百雞的問題算是一套非常經典的不定方程的問題,題目很簡單 公雞5文錢乙隻,母雞3文錢乙隻,小雞3只一文錢,用100文錢買一百隻雞,其中公雞,母雞,小雞都必須要有,問公雞,母雞,小雞要買多少只剛好湊足100文錢。分析 估計現在小學生都能手工推算這套題,只不過我們用計算機來推算,我們可以設公雞為x,...

JAVA經典演算法,每日一題

梳理思路 首先先計算出每個月兔子的數量,摸清規律再去編碼實現 第乙個月1對 第二個月1對 第三個月2對 這對祖宗兔子生了一對,這一對命名為第一代,所以是1 1 第四個月3對 這對祖宗兔子又生了一對,這一代命名為二代,2 1 第四個月5對 祖宗兔子又生的一對 第一代剛好長到第三個月也生的一對命名第三代...

經典演算法題每日演練 第十一題 Bitmap演算法

在所有具有效能優化的資料結構中,我想大家使用最多的就是hash表,是的,在具有定位查詢上具有o 1 的常量時間,多麼的簡潔優美,但是在特定的場合下 對10億個不重複的整數進行排序。找出10億個數字中重複的數字。當然我只有普通的伺服器,就算2g的記憶體吧,在這種場景下,我們該如何更好的挑選資料結構和演...