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);
}

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;
		if (m>=i) 	//改动 
		{			//改动 
			//out(g); 
			yyy(g+1); 
			out(g);//
		} 
		m=m+i;
		i++;
	}
}

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

相关文章:

  • 2022-12-23
  • 2021-06-08
  • 2021-10-10
  • 2021-11-20
  • 2022-02-22
  • 2021-11-22
猜你喜欢
  • 2022-02-03
  • 2022-12-23
  • 2022-12-23
  • 2021-10-04
  • 2021-10-06
相关资源
相似解决方案