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 }

 

上一篇:P4980 Pólya 定理 + DFS


下一篇:送外卖----dfs