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

来源:互联网 发布:手机电量显示软件 编辑:程序博客网 时间:2024/04/20 13:44
#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);
}
原创粉丝点击