題目如下
非常經典的一道入門題。
還記得小學是如何解這樣的題嗎?
沒錯!
列方程!!
設雞的只數為
x , 則兔的只數為 n−
x. 方程如下: 2x
+4(n
−x)=
m 則x
=4n−
m2問題在於 4n
−m可能為奇數,此時就要判斷 4n
−m是否為奇數,同時不要忘記 0≤
x≤n ;
這就涉及到乙個最基礎也是最暴力的演算法:
列舉列舉演算法又稱為窮盡演算法,它的基本思想是「有序地嘗試每一種可能」。定義乙個變數
i ,
i取遍
1 到
n中的每乙個整數值,如果符合 2i
+4(n
−i)=
m ,就輸出
i (代表雞的隻數)和 n−
i(代表兔的隻數)
主要**如下:
...
.int n,m;
while(cin>>n>>m&&n&&m)
//當n,m都非零時進入迴圈
{bool flag=false;
//判斷是否有解,預設false,代表無解;true代表有解
for(int i=0;i<=n;++i)
{if(2*i+4*(n-i)==m)
{flag=true;
//有解
cout
//如果無解,輸出「no answer"
{cout
<
通過這道題,相信大家一定對列舉演算法有了更深的認識。有時我們可以對列舉演算法進行優化,比如收緊列舉的條件。
此題可以先判斷 4n
−m的奇偶性,如果為奇數,直接輸出no answer
其實還有很多可以優化的地方正等著大家去發現。
64 雞兔同籠
時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 已知雞和兔的總數量為n,總腿數為m。輸入n和m,依次輸出雞和兔的數目,如果無解,則輸出 no answer 不要引號 輸入第一行輸入乙個資料a,代表接下來共有幾組資料,在接下來的 a 10 a行裡,每行都有乙個n和m.0輸出 輸...
例題 雞兔同籠
問題描述 乙個籠子裡面關了雞和兔子 雞有2隻腳,兔子有4隻腳,沒有例外 已經知道了籠子裡腳的總數a,問籠子裡面至少有多少只動物,至多有多少只動物?輸入資料 第一行是測試資料的組數n,後面跟著n行輸入。每組測試資料佔一行,每行包含乙個正整數a a 32768 輸入要求 輸入包含n行,每行對應乙個輸入,...
acm雞兔同籠
描述 已知雞和兔的總數量為n,總腿數為m。輸入n和m,依次輸出雞和兔的數目,如果無解,則輸出 no answer 不要引號 輸入 第一行輸入乙個資料a,代表接下來共有幾組資料,在接下來的 a 10 a行裡,每行都有乙個n和m.0輸出 輸出雞兔的個數,或者no answer 樣例輸入 2 14 32 ...