求助,为什么60分(两个TLE)
查看原帖
求助,为什么60分(两个TLE)
677589
hanzuorui楼主2022/7/18 09:56

哪位dalao会剪枝,请直接修改

代码:

#include <stdio.h>
int N,k,sum,cnt,a[10]={1,0,0,0,0,0,0,0,0};
void dfs(int n)
{
	if(n==(k+1))
	{
		if(sum==N)
		{
			cnt++;
		}
	}
	else
	{
		for(int i=a[n-1];i<=N;i++)
		{
			a[n]=i;
			if(sum<=N)
			{
				sum=sum+a[n];
				dfs(n+1);
				sum=sum-a[n];
			}
		}
	}
}
int main()
{
	scanf("%d%d",&N,&k);
	dfs(1);
	printf("%d",cnt);
	return 0;
}

谢谢!!!

2022/7/18 09:56
加载中...