64,691
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <string>
#include <set>
using namespace std;
set<string> multiNum(int n)
{
if ( n < 2)
{
cerr<<"乘法个数小于2"<<endl;
}
else if ( n == 2 )
{
set<string> s;
s.insert("X*X");
return s;
}
else if( n > 2)
{
set<string> sn1 = multiNum(n-1);
set<string> s;
set<string>::iterator sitern1 = sn1.begin();
while(sitern1 != sn1.end())
{
string str = *sitern1;
for(int i=0;i<str.size();i++)
{
if(str[i] == 'X')
{
string temp;
if( i == 0)
temp = string("(X*X)")+string(str,i+1,str.size()-i-1);
else if( i == str.size()-1)
temp = string(str,0,i)+string("(X*X)");
else
temp = string(str,0,i)+string("(X*X)")+string(str,i+1,str.size()-i-1);
s.insert(temp);
}
}
sitern1++;
}
return s;
}
}
void turn2alpha(set<string> s)
{
set<string>::iterator siter = s.begin();
while(siter!=s.end())
{
string s = *siter;
char* myAlpha = new char[2];
myAlpha[0] = 'a';
myAlpha[1] = '\0';
for(int i=0; i<s.size(); i++)
{
if(s[i] == 'X')
{
s.replace(i,1,myAlpha);
++*myAlpha;
}
}
delete[] myAlpha;
cout<<s<<endl;
siter++;
}
}
int main()
{
for(int i =2; i<6; i++)
{
/*
set<string> s = multiNum(i);
set<string>::iterator siter = s.begin();
while(siter != s.end())
{
cout<<*siter<<endl;//最后转换输出
siter++;
}*/
cout<<i<<"个乘数的所有结合律如下:"<<endl;
turn2alpha(multiNum(i));
}
cin.get();
cout<<"10个乘数的所有结合律如下:"<<endl;
turn2alpha(multiNum(10));
cin.get();
return 0;
}
#include <iostream>
#include <string>
#include <set>
using namespace std;
set<string> multiNum(int n)
{
if ( n < 2)
{
cerr<<"乘法个数小于2"<<endl;
}
else if ( n == 2 )
{
set<string> s;
s.insert("X*X");
return s;
}
else if( n > 2)
{
set<string> sn1 = multiNum(n-1);
set<string> s;
set<string>::iterator sitern1 = sn1.begin();
while(sitern1!=sn1.end())
{
string str = *sitern1;
cout<<"string str = *sitern1 "<<str<<endl;
cout<<str.size();
for(int i=0;i<str.size();i++)
{
if(str[i] == 'X')
{
string temp;
cout<<endl<<"遇见X"<<temp<<endl<<endl;
temp = string(str,i-1)+string("(X*X)")+string(str,i+1,str.size()-i-1);
s.insert(temp);
}
}
}
return s;
}
}
int main()
{
set<string> s = multiNum(2);
set<string>::iterator siter = s.begin();
while(siter != s.end())
{
cout<<*siter<<endl;//最后转换输出
siter++;
}
multiNum(3);
cin.get();
return 0;
}