循环嵌套

alt

#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;
}

全部评论

相关推荐

勤劳的鲸鱼在okr拆解:没有别的选择就去吧,有实习和没实习找工作是天上地下
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务