题目传送门:P2386 放苹果
搜索与回溯模板题,但是加上了可以“空着不放的条件”。
其实想一下,这道题就是全排列的进阶版。
代码:
#include<bits/stdc++.h>
using namespace std;
int a[15]={1},ans,n,m;
int x(int s,int k){
for(int i=a[k-1];i<=s;i++){
if(i<=m){
s-=i;
a[k]=i;
if(s==0&&k<=n)ans++;
else x(s,k+1);
s+=i;
}
}
return 0;
}
int main(){
int k;
cin>>k;
for(int i=1;i<=k;i++){
ans=0;
cin>>m>>n;
x(m,1);
cout<<ans<<endl;
}
return 0;
}