DFS遍历+SET去重,测试用例是对的
#include<bits/stdc++.h>
#define ll long long
using namespace std;
string s="lanqiao";
set<string> ss;
void dfs(int d,int len,string str){
str+=s[d];
//cout<<str<<endl;
ss.insert(str);
for(int i=d+1;i<len;i++){
if(s[i]>s[d])
dfs(i,len,str);
}
}
int main(){
string str;
for(int i=0;i<s.size();i++){
dfs(i,s.size(),str);
}
for(set<string>::iterator it=ss.begin();it!=ss.end();it++)
cout<<*it<<endl;
cout<<ss.size()<<endl;
return 0;
}