其他分享
首页 > 其他分享> > P2404自然数的拆分问题

P2404自然数的拆分问题

作者:互联网

一.题目描述:

 

 二.解题思路:

从1开始往下dfs就行了,但是每次循环的开始必须要大于等于前面选择的那个数就ok了。

三.代码实现:

 1 #include "bits/stdc++.h"
 2 using namespace std;
 3 int a[10] = {0};
 4 void dfs(int f,int sum,int n,int t)
 5 {
 6     if(sum == n){
 7         for(int i = 0;i < f;i++)
 8             if(i == f - 1)
 9                 cout << a[i];
10             else 
11                 cout << a[i] << '+';
12         cout << endl;
13     }
14     for(int i = t;i < n;i++){
15         if(sum + i > n) return;
16         else{
17             a[f] = i;
18             dfs(f + 1,sum + i,n,i);
19         }
20     }
21 
22 }
23 int main()
24 {
25     int n;
26     cin >> n;
27     dfs(0,0,n,1);
28     return 0;
29 }

 

标签:std,P2404,return,int,sum,自然数,dfs,拆分
来源: https://www.cnblogs.com/scannerkk/p/15782425.html