题目:将一个正整数n拆分成若干个正整数的和(至少两个数,n<=100)。
输入格式:
一个正整数n
输出格式:
若干行,每行一个等式(数与数之间要求非降序排列)。最后一行给出解的总个数
输入样例:
在这里给出一组输入。例如:
4
输出样例:
4=1+1+1+1
4=1+1+2
4=1+3
4=2+2
4
最后一行的4表示总共有4个解。
题解:dfs每一种可行的情况即可,每次从上一次枚举的数开始遍历,减去可行值,当 v == 0 时就是一个解。用path数组存可行的数据。最后输出 。
代码:
#includeusing namespace std; const int N = 110; int path [N]; int n ; int res = 0 ; void dfs(int v , int u , int k ){ if(v < 0 ) return ; if( v == 0 ){ cout< if( i == 0 ) cout<<"="< path[u] = i; dfs(v-i , u+1 , i); } } int main() { cin>>n; dfs(n ,0 , 1); cout<



