循环嵌套
#include <bits/stdc++.h>
using namespace std;
int arr[100005];
void dfs(int n,int m,int i,int a,int p)
{
if(n==0&&i==m+1)
{
int t=0;
for(int j=1;j<=i-2;j++)
{
if(arr[j]>=arr[j+1])t=1;
}
if(!t)
{
cout<<p<<"=";
for(int j=1;j<=i-2;j++) cout<<arr[j]<<"+";
cout<<arr[i-1]<<endl;
}
}
//一切在个数<=m的条件下的所有情况
if(i<=m)
{
for(int j=a;j<=n;j++)
{
arr[i]=j;
dfs(n-j,m,i+1,j,p);
}
}
}
int main()
{
int n,m,p;
cin>>n>>m;
p=n;
dfs(n,m,1,1,p);
return 0;
}