zju 1937 初涉——深度优先搜索

#include "stdio.h"

int a[11],b[11];
int k,flag,n,s; 

void DFS();

int main()
{
	
	int i;
	while(scanf("%d",&n),n)
	{
		flag=0;
		a[0]=1;
		k=0;  s=10;
		DFS();
		printf("%d",b[0]);  
		for(i=1;i<=s;i++)
			printf(" %d",b[i]);
		printf("\n");
	}
	return 0;
}

void DFS()
{
	int i;
	if(a[k]==n)
	{
		if(k<s)  
		{  
			for(i=0;i<=k;i++)  
				b[i]=a[i];  
			s=k; 
		}
		return ;
	}
	else if(k>=s || a[k]>n)
		return ;
	for( i=k; i>=0; --i )
	{
		k++;
		a[k]=a[k-1]+a[i];
		DFS();
		k--;	
	}	
}


你可能感兴趣的:(搜索)