母数拆分

#include <stdio.h>
int a[1000];
int backtrack(int n,int t,int temp)
{
	int i;
	if(n==0){
		for(i=0;i<t-1;i++)
			printf("%d+",a[i]);
		printf("%d\n",a[t-1]);
	}
	else
		for(i=n;i>0;i--)
			if(i<=temp){
					a[t]=i;
					temp=i;
					backtrack(n-i,t+1,temp);
				}
	return 0;
}

int main()
{
	int n;
	scanf("%d",&n);
	backtrack(n,0,n);
	return 0;
}//有个规律,backtrack中的第一个变量与第三个变量之和为n;

你可能感兴趣的:(母数拆分)