拆开数字 2=1+1 2=2;

#include<iostream>
#include <string>
using namespace std;
/*
class a{
public:
    virtual void fun2()
    {
    cout<<"a void"<<endl;
    }
    private: void fun()
    {
    fun2();
    }
}
;
class b: public   a
{
public :
    void fun2()
    {
        cout<<"b"<<endl;
    }
    void fun()
    {
        a::fun();
    }
};*/
//
//i 为想要计算的数字
//sum 为计算过程加起来的数字
//cs为输出的格式
//pre为相加过程中前一个数字,去除递增递减规律性
void fun(int i , int sum ,string cs,int pre)
{
    if( sum == i)
    {
     int c=cs.length();
        cs=cs.substr(0,cs.length()-1);
        cout<<cs<<endl;
    }
    else
    {
        int count;
       if(sum == 0)
           count=1;
       else
           count=pre;


       for(count;count<=i-sum;count++)
       {
          string temp=cs;
          char a[10];
          memset(a,0,10);
          itoa(count,a,10);
          
          cs+=a;
          cs+="+";
          sum+=count;


          fun(i,sum,cs,count); 


          sum-=count;
          cs=temp;
       }
        
    }
}
void main()
{
    int a=0;
    int b=3;


    char s[10];
    memset(s,0,10);
    itoa(b,s,10);


    string cs;
    cs+=s;
    cs+="=";
  
    fun(b,a,cs,0);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值