3 条题解

  • 0
    @ 2022-11-14 16:05:47

    自然数的拆分!

    需要注意:当长度是1的时候不输出,且按照规律每一位应大于等于前一位

    #include<bits/stdc++.h>
    using namespace std;
    int n,cnt,ans[100000];
    void dfs(int res,int las)
    {
    	if(res==0&&cnt!=1)//长度大于1,输出 
    	{
    		cout<<n<<"=";
    		for(int i=1;i<=cnt;i++)
    		{
    			if(i!=1)cout<<"+"<<ans[i];
    			else cout<<ans[i];
    		}
    		cout<<endl;
    		return ;
    	}
    	for(int i=las;i<=res;i++)//搜索 
    	{
    		cnt++;
    		ans[cnt]=i;
    		dfs(res-i,i);
    		cnt--;
    	}
    }
    int main()
    {
    	cin>>n;
    	dfs(n,1);
    	return false; 
    }
    

    信息

    ID
    537
    时间
    1000ms
    内存
    128MiB
    难度
    3
    标签
    (无)
    递交数
    58
    已通过
    31
    上传者