输入: a b c
输出:--------------
#include <vector>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <string>
using namespace std;
//全排列
struct node{
node(char c){ch =c;}
char ch ;
bool flag = false ;
};
vector<node> nodes;
string str;
int num = 0 ;
void quanpailie(){
if(all_of(nodes.begin(),nodes.end(),[](const node&p){return p.flag;})){
cout<<str<<"------"<<num<<endl;
return ;
}
for(int i=0;i<nodes.size();i++){
if(nodes[i].flag==false){
nodes[i].flag = true;
str += nodes[i].ch ;
quanpailie(); //递归
nodes[i].flag = false; //回溯
str.pop_back();
}
}
}
int main() {
string line ;
getline(cin,line);
stringstream strm(line) ;
char ch;
while(strm>>ch)
nodes.push_back(node(ch));
quanpailie();
return 0;
}