| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
我的递归程序基本思想就是把盘子中的苹果数目排序,把数目最大的那个盘子拿出来,剩下的进行递归。
这样 “3 4 0” 这种情况就不可能出现了。
#include <iostream>
using namespace std;
int f(int i, int j, int maxVal)
{
int sum = 0;
if( j==1 ) return 1;
if( i==1 || i==0 ) return 1;
int k;
for( k=min(maxVal,i); k*j>=i; k--)//k值不能小于当前平均每个盘子中的苹果数
{
sum = sum + f(i-k, j-1, k);
}
return sum;
}
int main()
{
int t, M, N;
cin>>t;
while(t--)
{
cin>>M>>N;
cout<<f(M,N, M+1)<<endl;
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator