(遞迴)666:放蘋果

來源:互聯網
上載者:User

標籤:不同   思考   描述   main   ==   不同的   題目   小結   out   

描述

把M個同樣的蘋果放在N個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?

(用K表示)5,1,1和1,5,1 是同一種分法。

輸入

第一行是測試資料的數目t(0 <= t <= 20)。

以下每行均包含二個整數M和N,以空格分開。1<=M,N<=10。

輸出

對輸入的每組資料M和N,用一行輸出相應的K。

範例輸入

1

7 3

範例輸出

8

 

我の思考

這個問題用遞迴的思維來做,我們需要明確,它應該有兩個參數,一個是蘋果的數量m,一個是盤子的數量n。

然後我們再根據m與n的比較來劃分情況,注意,它的重複條件。

1.當m>n(蘋果更多)時,每個盤子肯定至少有一個蘋果,所以我們需要考慮的就是如何把m-n個蘋果放入n個盤子裡面。

2.當m<n(盤子多)時,這時候其實就相當於要把m個蘋果放入m個盤子裡。

3.當m=n(蘋果和盤子一樣多時),我們可以分為每一個都放一個蘋果,也就是1次,還有當空出盤子放的情況。

 

我の代碼

#include <iostream>using namespace std;int func(int m,int n){    if(n==0 || m==0){        return 0;    }    if(n==m){        return 1+func(m,n-1);    }    if(m<n){        return func(m,m);    }    if(m>n){        return func(m-n,n)+func(m,n-1);    }}int main(){    int k=0;    cin>>k;    while(k){        int n,m;        cin>>m>>n;        cout<<func(m,n)<<endl;        k--;    }    return 0;}

 

我の小結

這類題目應該首先確定好參數的數量,再想辦法找出參數之間的關係組成,從而的到答案。



(遞迴)666:放蘋果

相關關鍵詞:
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.