!!!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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现