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