POJ 1664 放苹果(整数划分)

View Code
 1 #include<iostream>
2 using namespace std;
3
4 int divs(int m,int n)
5 {
6 if(m<0)return 0;
7 if(m == 0 || n==1)return 1;
8 return divs(m-n,n) + divs(m,n-1);
9 // 可以归纳为两种情况:
10 //divs(m-n,n) 表示 每个盘子中至少一个苹果 ,则剩下的 m - n个 可以 随意 向 n个盘子中放
11 //divs(m,n-1) 表示 至少一个盘子 没有苹果 则 m 个苹果 还是 可以 随意放向 剩余的 n-1个盘子
12 }
13
14 int main()
15 {
16 int t,m,n;
17 cin>>t;
18 while(t--)
19 {
20 cin>>m>>n;
21 cout<<divs(m,n)<<endl;
22 }
23 system("pause");
24 return 0;
25 }

 

posted @ 2012-04-01 19:24  知行执行  阅读(168)  评论(0编辑  收藏  举报