后两个点超时
查看原帖
后两个点超时
460610
XuanRanDev楼主2021/3/14 14:19

想了半天实在没有思路了,不知道该如何剪枝优化....

#include "bits/stdc++.h"

using namespace std;

int N,K;
int ans = 0 ;
 
void dfs(int x,int n,int s){//从x开始查找,当前是n个数,和为s

	if(n > K || s > N || x > N) return;
	
//	cout << x <<" " << n <<" " << s << endl; 
	
	if(n == K && s == N){	
		ans++;
		return;
	} 
	
	if(s+x > N) return;
	dfs(x,n+1,s+x);//依旧选这个数
	dfs(x+1,n,s);//不选 	 
}
 
int main(){
	
	cin >> N >> K;
	
	dfs(1,0,0);	
	
	cout << ans;
	return 0;
} 
2021/3/14 14:19
加载中...