#include <bits/stdc++.h> #define int long long //(有超时风险) #define PII pair<int,int> #define endl '\n' using namespace std; const int N=2e5+10,M=1e3+10; int n; int p[N]; void dfs(int sum,int cnt,int st) { if(sum>n)return ; if(sum==n) { for(int i=1;i<=cnt-2;i++) cout<<p[i]<<'+'; cout<<p[cnt-1]<<endl; return ; } //回溯是因为路径不一样,下一条路径还需要用到这个点。 for(int i=st;i<=n-1;i++) { p[cnt]=i; dfs(sum+i,cnt+1,i); p[cnt]=0; } return ; } signed main() { std::ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); cin>>n; //sum,cnt,st; dfs(0,1,1); return 0; }
P2404 自然数的拆分问题
于 2024-04-05 19:48:47 首次发布