百錢買百雞的問題算是一套非常經典的不定方程的問題,題目很簡單:公雞5文錢乙隻,母雞3文錢乙隻,小雞3只一文錢,
用100文錢買一百隻雞,其中公雞,母雞,小雞都必須要有,問公雞,母雞,小雞要買多少只剛好湊足100文錢。
分析:估計現在小學生都能手工推算這套題,只不過我們用計算機來推算,我們可以設公雞為x,母雞為y,小雞為z,那麼我們
可以得出如下的不定方程,
x+y+z=100,
5x+3y+z/3=100,
下面再看看x,y,z的取值範圍。
由於只有100文錢,則5x<100 => 0好,我們已經分析清楚了,下面就可以編碼了。
1class
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
1class
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的記憶體吧,在這種場景下,我們該如何更好的挑選資料結構和演...