1 7 3樣例輸出
8
大佬的AC代碼,思路分析的很厲害
#include<iostream>
#include<cstring>
using namespace std;
const int maxm=10000;
int m[maxm],n[maxm],k[maxm];
int putApple(int m,int n);
int main(){
memset(k,0,sizeof(k));
int t;
cin>>t;
for(int i=1;i<=t;i++){
cin>>m[i]>>n[i];
}
for(int i=1;i<=t;i++){
k[i]=putApple(m[i],n[i]);
cout<<k[i]<<endl;
}
}
int putApple(int m,int n){
if(m==0||n==1) return 1;
if(n>m)
return putApple(m,m);
else
return putApple(m,n-1)+putApple(m-n,n);
}
PS:不是組合問題,組合問題是從n箇中選K個,一次挑選只能分成兩份。
不是鴿巢問題,鴿巢問題是n個格子,n+1個物品,則一定有兩個被放進同一個格子裏。