放蘋果

Description

把M個同樣的蘋果放在N個同樣的盤子裏,允許有的盤子空着不放,問共有多少種不同的分法?(用K表示)5,1,1和1,5,1 是同一種分法。

Input

第一行是測試數據的數目t(0 <= t <= 20)。以下每行均包含二個整數M和N,以空格分開。1<=M,N<=10。

Output

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

Sample Input

1
7 3

Sample Output

8

 

 
這道題主要是用遞歸的思想具體思路程序上有解釋,
#include<iostream>
using namespace std;
int yy(int m,int n)   //m個蘋果n個盤子
{
 if(m<0)   //遞歸到麼有蘋果了,直接返回0
  return 0;
 if(m==0)   //遞歸到正好m==n,一個蘋果放一個盤子,只有一種放法
  return 1;
 if(n==1)   //遞歸到只剩一個盤子是隻能把所有的都放在一個盤子,即也只有一種放法
  return 1; 
 return yy(m-n,n)+yy(m,n-1);//兩種可能,可以先取n個蘋果在一個盤子裏放一個然後再考慮n個盤子裏放m-n個蘋果的情況(所有的盤子都用到),或者是有一個盤子不放蘋果,然後從其餘的n-1個盤子放m個蘋果
}
int main()
{
 int t,i;
 cin>>t;
 for(i=0;i<t;i++)
 {
  int m,n;
  cin>>m>>n;
  cout<<yy(m,n)<<endl;
 }
 return 0;
}
發佈了57 篇原創文章 · 獲贊 8 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章