Advertisement
Nayeemzaman

aaaaaaa

Jan 18th, 2020
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.07 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. string s;
  4. int sz,n;
  5. bool visit[55];
  6. vector<int>v;
  7.  
  8. void backtrack(int i){
  9.     if(i>=sz)
  10.         return;
  11.     int num=s[i]-48;
  12.     //cout<<num<<endl;
  13.     if(visit[num]==false&&num!=0){
  14.         visit[num]=true;
  15.         v.push_back(num);
  16.         backtrack(i+1);
  17.         if(v.size()==n)
  18.             return;
  19.         v.pop_back();
  20.         visit[num]=false;
  21.     }
  22.     num=(s[i]-48)*10+s[i+1]-48;
  23.     //cout<<num<<endl;
  24.     if(visit[num]==false&&num<=n&&num!=0){
  25.         visit[num]=true;
  26.         v.push_back(num);
  27.         backtrack(i+2);
  28.         if(v.size()==n)
  29.             return;
  30.         v.pop_back();
  31.         visit[num]=false;
  32.     }
  33. }
  34. int main()
  35. {
  36.     cin>>s;
  37.     sz=s.size();
  38.     if(sz<=9){
  39.         cout<<s[0];
  40.         for(int i=1;i<sz;i++)
  41.             cout<<' '<<s[i];
  42.         cout<<endl;
  43.     }
  44.     else{
  45.         memset(visit,false,sizeof(visit));
  46.         n=9+(sz-9)/2;
  47.         backtrack(0);
  48.         cout<<v[0];
  49.         for(int i=1;i<v.size();i++)
  50.             cout<<' '<<v[i];
  51.         cout<<endl;
  52.     }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement