1.题目:
2.分析:
回溯
3.代码:
#include<bits/stdc++.h>
using namespace std;
vector<string> f(string s)
{
vector<string> vs;
vs.push_back(s);
if(s.length()==1) return vs;
if(s[s.length()-1]=='0'&&s[0]!='0') return vs;
if(s[0]=='0')
{
vector<string> vs2;
if(s[s.length()-1]=='0') return vs2;
vs2.push_back(s.substr(0,1).append(".").append(s.substr(1,s.length()-1)));
return vs2;
}
//可以在任意位置加小数点了
for(int i=1;i<=s.length()-1;i++)
{
vs.push_back(s.substr(0,i).append(".").append(s.substr(i,s.length()-i)));
}
return vs;
}
int main()
{
string s;
s=s.substr(1,s.length()-2);
vector<string> vs;
if(s=="") return vs;
for(int i=1;i<=s.length()-1;i++)
{//字符串最小长度为1,最大长度为 s.length()-1
vector<string> vs1=f(s.substr(0,i));
vector<string> vs2=f(s.substr(i,s.length()-i));
if(vs1.size()==0||vs2.size()==0) continue;
for(int i=0;i<vs1.size();i++)
{
for(int j=0;j<vs2.size();j++)
{
string sss="(";
vs.push_back(sss.append(vs1[i]).append(", ").append(vs2[j]).append(")"));
}
}
}
return vs;
}