#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
void partition(string &s, int start, vector<string> temp, vector<vector<string> > &res){
int len = s.size();
if (temp.size() == 2)//////切割几刀就等于几,3刀就等于3
{
if(s.substr(start)=="")
{
return;
}
else
{
temp.push_back(s.substr(start));
res.push_back(temp);
return;
}
}
for (int i=start; i<len; i++){
if (true){
temp.push_back(s.substr(start, i-start+1));
partition(s, i+1, temp, res);
temp.pop_back();
}
}
}
int main()
{
vector<vector<string> > res;
vector<vector<int> > res1;
vector<string> temp;
string s;
s="abcdef";
partition(s, 0, temp, res);
for(auto it=res.begin();it!=res.end();it++)
{
for(auto it1=(*it).begin();it1!=(*it).end();it1++)
{
cout<<*it1<<" ";
}
cout<<endl;
}
}
如图,是将字符串中间切2刀得到的结果