問題:
今有雉兔同籠,上有三十五頭,下有九十四足,問雉兔各幾何?程式設計求雉兔各幾何。解法1:人肉計算機
手工解方程,程式直接輸出答案,這是最短的程式,沒有之一。
#include
using
namespace std;
intmain()
解法2:方程求解
當然,也可以讓計算機解方程,省去手工計算的工作量。
#include
using
namespace std;
intmain()
解法3:暴力搜尋
再省點事,方程也不需要我們來變換,直接讓計算機逐個答案試探,反正計算機計算速度快,只要我們少動腦筋就行。
#include
using
namespace std;
intmain()
}}cout <<
"unsolvable!"
<< endl;
return0;
}
解法4:啟發式搜尋
其實上面的程式中,y不用迴圈,因為 y=35-x,這樣只需要 x 迴圈 36 次就能把答案找出來,速度比上面提高 36 倍。儘管計算機速度很快,我們還是盡可能減少不必要的搜尋工作。
#include
using
namespace std;
intmain()
} cout <<
"unsolvable!"
<< endl;
return0;
}
解法5:隨機求解
如果你對求x,y沒思路,可以分析一下它們的取值範圍,然後在取值範圍內隨機取值,然後檢驗一下這組隨機值是否為符合答案要求,如果符合的話,問題就搞定了。
別看不起隨機求解,很多複雜演算法都用到了這種技巧,用的好的話,能解決很多無法用公式求解的難題。正所謂亂拳打死師傅啊!
#include
using
namespace std;
intmain()
}return0;
}
解法6:燒腦筋求解方法
我覺得不炫耀一下技巧,顯得太 low 了,用遞迴方法給出一段**,慢慢燒腦筋去吧!
#include
using
namespace std;
intchickens
(int m,
int n)
intmain()
還可以利用 lambda表示式進一步化簡,但對於初學者,意義不大了,有興趣自己搞一下。 雞兔同籠問題
時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 已知雞和兔的總數量為n,總腿數為m。輸入n和m,依次輸出雞和兔的數目,如果無解,則輸出 no answer 不要引號 輸入第一行輸入乙個資料a,代表接下來共有幾組資料,在接下來的 a 10 a行裡,每行都有乙個n和m.0輸出 輸...
雞兔同籠問題
雞兔同籠,是中國古代著名典型趣題之一,記載於 孫子算經 之中。雞兔同籠問題,是小學奧數的常見題型。許多小學算術應用題和填空題都可以轉化成這類問題,或者用解它的典型解法 假設法 來求解。因此很有必要學會它的解法和思路。通常是假設法比較簡單易懂一點。雞兔同籠是中國古代的數學名題之一。大約在1500年前,...
雞兔同籠問題
已知雞和兔的總數量為n,總腿數為m。輸入n和m,依次輸出雞和兔的數目,如果無解,則輸出 no answer 不要引號 第一行輸入乙個資料a,代表接下來共有幾組資料,在接下來的 a 10 a行裡,每行都有乙個n和m.0輸出雞兔的個數,或者no answer 214 32 10 16 12 2 no a...