4,5TLE了,用的DFS应该要剪枝,但是不知道怎么剪,求改。
#include <bits/stdc++.h>
using namespace std;
int a[100];
int n,k,ans = 0;
void dfs(int x, int last,int total){
if(total > n) return;
if(x > k){
int sum = 0;
for(int i = 1;i <= k; i++) sum += a[i];
if(sum == n){
ans++;
}
return;
}
for(int i = last; i <= n; i++){
a[x] = i;
dfs(x + 1,i,total+i);
}
}
int main(){
cin>>n>>k;
dfs(1,1,0);
cout << ans;
return 0;
}