// INCLUDE HEADER FILES NEEDED BY YOUR PROGRAM // SOME LIBRARY FUNCTIONALITY MAY BE RESTRICTED // DEFINE ANY FUNCTION NEEDED // FUNCTION SIGNATURE BEGINS, THIS FUNCTION IS REQUIRED //#include<iostream> //#include <vector> //using namespace std; #include <string> #include <iostream> #include <vector> using namespace std; string ans; bool vis[15]; string tmp =""; bool pan(string s) { int size = s.size(); bool a = true; for(int i=0;i<size-1;++i) { if(s[i] > s[i+1]) { a = false; } } return a; } void dfs(string a ,int m,int n ,int index ,vector <string> &res) { if (index == m) { for (int i = 0; i < m; i++) { //cout << ans[i] ; tmp +=ans[i]; } // printf("\n"); res.push_back(tmp); tmp = ""; return; } for (int i = 0; i < n; i++) { if (!vis[i]) { //tmp +=a[i]; ans[index] = a[i]; vis[i] = 1; dfs(a,m,n,index + 1,res); vis[i] = 0; } } } int getstr(string x,string y,int &start) { int xlen = x.size(); int ylen = y.size(); if(xlen==0||ylen==0) { return 0; } int max =-1; for(int i=0;i<xlen;++i) { for(int j=0;j<ylen;++j) { int m=i,n=j; int len =0; while(m<xlen && n<ylen) { if(x[m]!=y[n]) { break; } m++; n++; len++; } if(len > max) { max = len; start = i; } } } return max; } vector<string> passwordList(string userName, string motherName, int pwdLen) { vector<string> res; //WRITE YOUR CODE HERE int start; int len = getstr(userName,motherName,start); cout << "len:" << len << endl; string he = ""; for(int i=0;i<len;++i) { he += userName[start+i]; } cout << he << endl; //vector < vector<string> > result; dfs( he ,len-1,len,0,res); vector<string> resultend; for(int i=0;i<res.size();++i) { if(pan(res[i])) { resultend.push_back(res[i]); } } return resultend; } int main() { string s1 = "abckmda"; string s2 = "abckmhhh"; vector <string> re; re = passwordList(s1,s2,3); //re.push_back(s1); //re.push_back(s2); cout << re.size() << endl; for(int i=0;i<re.size();++i) cout << re[i] << endl; return 0; } //FUNCTION SIGNATURE ENDS |