跟校赛的那道质数搜索类似.
求一个数可以由多少k个数相加组成.
从大到小搜索一遍就可以了.并且正好符合他的条件,学习了.
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,k;
int ans;
void dfs(int id, int sum,int cnt)
{
if (sum == n&&cnt<=k)
{
ans++;
return;
}
if (cnt > k)
return;
if (sum > n)
return;
for (int i = id; i >=0; i--)
dfs(i, sum + i, cnt + 1);
}
int main()
{
int t;
cin >> t;
while (t--)
{
scanf("%d%d", &n, &k);
ans = 0;
dfs(n, 0, 0);
printf("%d\n", ans);
}
}