演算法學習筆記之五家共井問題

2021-07-11 23:23:44 字數 1030 閱讀 3789



問題:

五家人共用一口井,甲家的繩子用兩條不夠,還要再用乙家的繩子一條才能打到井水;乙家的繩子用三條不夠,還要再用丙家的繩子一條才能打到井水;丙家的繩子用四條不夠,還要再用丁家的繩子一條才能打到井水;丁家的繩子用五條不夠,還要再用戊家的繩子一條才能打到井水;戊家的繩子用六條不夠,還要再用甲家的繩子一條才能打到井水。

最後問:井有多深?每家的繩子各有多長?

這道題其實不難,大家應該都可以做出來,和上次的百錢買百雞的問題差不多,那就有人問了,那為什麼還要寫出來呢,當然是普通方法會讓複雜度讓人難以接受的,複雜度為o(n2),需要優化。

我們令甲為a,乙為b,丙為c,丁為d,戊為e,井深為h,則

2a+b=h   ①

3b+c=h ②

4c+d=h ③

5d+e=h ④

6e+a=h ⑤

將其變形:

b=h-2a ⑥

c=h-3b ⑦

d=h-4c ⑧

e=h-5d ⑨

a=h-6e ⑩

將⑥,⑧,⑨,⑩分別代入⑦,可得:

c=(148/721)h

令 h=721k,則 c=148k,將其代入⑥,⑦,⑧,⑨,⑩可得:

a=265k

b=191k

c=148k

d=129k

e=76k

h=721k

因為繩長和井深不可能為負,所以k > 0,當然這樣這個題目就有無數個解的,我這裡去 0 < k

**為:

public

static

void

main(string args)

}結果:

這樣複雜度就變為0(n)了,在這樣我把這種方法叫做「統一變數法」(即減少迴圈的次數),大家以後遇到類似的題目可以嘗試下哦。。。。



五家共井問題

五家共井 問題和 雞兔同籠 問題一樣,都是乙個著名的問題。具體的題目如下 現在有五家共用一口井,甲 乙 丙 丁 戊五家各有一條繩子汲水 下面用文字表示每一家的繩子 甲 2 乙 井深,乙 3 丙 井深,丙 4 丁 井深,丁 5 戌 井深,戌 6 甲 井深,求甲 乙 丙 丁 戊各家繩子的長度和井深。le...

五家共井問題

題目 古代數學巨著 九章算數 中有這麼一道題叫 五家共井,甲二綆 汲水用的井繩 不足,如 接上 乙一綆 乙三綆不足,如丙一綆 丙四綆不足,如丁一綆 丁五綆不足,如戊一綆 戊六綆不足,如甲一綆,皆及。意思就是說五家人共用一口井,甲家的繩子用兩條不夠,還要再用乙家的繩子一條才能打到井水 乙家的繩子用三條...

經典演算法題每日演練 第二題 五家共井

古代數學巨著 九章算數 中有這麼一道題叫 五家共井,甲二綆 汲水用的井繩 不足,如 接上 乙一綆 乙三綆不足,如丙一綆 丙四綆不足,如丁一綆 丁五綆不足,如戊一綆 戊六綆不足,如甲一綆,皆及。意思就是說五家人共用一口井,甲家的繩子用兩條不夠,還要再用乙家的繩子一條才能打到井水 乙家的繩子用三條不夠,...