!!!DFS-3 P2404 自然数的拆分问题

自然数的拆分问题

题目描述

任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。现在给你一个自然数n,要求你求出n的拆分成一些数字的和。每个拆分后的序列中的数字从小到大排序。然后你需要输出这些序列,其中字典序小的序列需要优先输出。

不能加return 为什么啊啊啊啊啊啊啊

#include <bits/stdc++.h>
using namespace std ;
const int N = 10000;
int n,a[N] = {1};
int cnt,rest;

void dfs(int x)
{
	for(int i = a[x-1] ; i <= rest ; i++ )
	{
		if( i == n) break;
		rest -= i;	a[x] = i;
		if(rest == 0)
		{
			for(int k = 1; k < x; k++) cout << a[k] << '+';
			cout << a[x]<< endl ; 
			//return ;				
		}	
		else 
			dfs(x+ 1);
				
		rest += i;	a[x] = 0;
	}
}

int main()
{   
	cin >> n;	rest = n;
	dfs(1);
    return 0;
}




posted @   HarySeldon  阅读(59)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示