中國數學家張邱建(公元五世紀,其它資料不詳),在他的《算經》中提出了著名的「百錢買百雞」問題:雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一。百錢買百雞,問翁、母、雛各幾何?
你的任務是:根據給定的錢數m,和買到的雞數n,輸出所有的方案。如果沒有可行方案,輸出none。
只有兩個整數m、n(0若干行,每行3個數,表示一種可行方案,分別表示雞翁、雞母、雞雛的數量。
100 100
0 25 75所有方案,第一優先順序按公雞的數量從小到大排列。4 18 78
8 11 81
12 4 84
列舉法的一些套路,確定以下內容:
列舉物件。有幾個來幾重迴圈
列舉範圍。
判斷條件。
根據題面資訊,
三個未知的列舉物件:公雞、母雞和小雞。
雞的數量最多n只。
需要滿足兩個條件
總數為n
總的**為m
第一版框架
分析複雜度三重迴圈\(o(n^3)\)的複雜度。該題目範圍,顯然會超時。需要進一步優化。for(int i=0;i<=n;i++)}}
}
對於列舉法優化的幾個思考方向:
減少列舉物件
剪枝hash代替判斷
根據數量關係,三種雞加起來總共n只,那麼當已經確定公雞i,母雞j時,小雞的數量可等於\(n-i-j\)不用再迴圈列舉了。這樣就減少了一重迴圈。
再根據錢的總價為m,那麼公雞最多就是買\(\frac\)只,母雞最多就是買\(\frac\)只,不需要列舉到n,減少非必要的列舉。
第二版框架
for(int i=0;i<=m/5;i++)}}
}
#include #include using namespace std;
int main()
} }if(!flag)
return 0;
}
3 C語言百錢買百雞(百錢百雞,百雞問題)
中國古代數學家張丘建在他的 算經 中提出了乙個著名的 百錢買百雞問題 雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一,百錢買百雞,問翁 母 雛各幾何?1 使用 for 語句對 3 種雞的數嫌在事先確定好的範圍內進行窮舉並判斷,對滿足條件的 3 種雞的數量按指定格式輸出,否則進行下次迴圈。2 程式 如...
百錢百雞問題
問題陳述 這是我國古代一道有名的數學難題,要求用100元買100隻雞,其中公雞五元乙隻,母雞三元乙隻,每種至少買乙隻,求購買方案,程式中以x代表公雞,y代表母雞,z代表小雞 static void main string args 母雞 小雞 x,y,z console.read 最後得到的答案如下...
百錢買百雞
這是個很簡單的邏輯,本來沒有什麼太多值得分享的。並且實現程式網上隨處可見,鄙人也並未提出更高深的意見。在閒暇看書時,對比了以下兩種實現。發現,其 實數學計算的不定性,可利用計算機的不斷重複 篩選 得到想要結果 如第一種實現 但是,顯而易見的是,第一種實現有個複雜度的問題。而第二種實現,是在數學計算推...