dfs-数的拆分

在这里插入图片描述

#include<iostream>
using namespace std;

int n,a[100]={1},m;

void out(int f){
	for (int i=1;i<=f;i++){//改动 
		cout<<a[i]<<"+";
	}
	cout<<m<<endl;//改动 
}

void yyy(int g){
	int i=a[g-1];
	while (i<=m&&i!=n){
		a[g]=i;
		m=m-i;
		cout<<g<<"  "<<i<<"  ";//
		out(g); //
		if (m>=i) 	//改动 
		{			//改动 
			out(g); 
			yyy(g+1); 
			cout<<g<<"  "<<i<<"  ";//
			out(g); //
			
		} 
		m=m+i;
		i++;
		cout<<g<<"  "<<i<<"  ";//
		out(g); //
	}
}

int main(){
	cin>>n;
	m=n;
	yyy(1);
}

在这里插入图片描述

#include<iostream>
using namespace std;

int n,a[100]={1},m;

void out(int f){
	for (int i=1;i<=f;i++){//改动 
		cout<<a[i]<<"+";
	}
	cout<<m<<endl;//改动 
}

void yyy(int g){
	int i=a[g-1];
	while (i<=m&&i!=n){
		a[g]=i;
		m=m-i;
		if (m>=i) 	//改动 
		{			//改动 
			//out(g); 
			yyy(g+1); 
			out(g);//
		} 
		m=m+i;
		i++;
	}
}

int main(){
	cin>>n;
	m=n;
	yyy(1);
}

猜你喜欢

转载自blog.csdn.net/qq_43126361/article/details/83751587
今日推荐