Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- string s;
- int sz,n;
- bool visit[55];
- vector<int>v;
- void backtrack(int i){
- if(i>=sz)
- return;
- int num=s[i]-48;
- //cout<<num<<endl;
- if(visit[num]==false&&num!=0){
- visit[num]=true;
- v.push_back(num);
- backtrack(i+1);
- if(v.size()==n)
- return;
- v.pop_back();
- visit[num]=false;
- }
- num=(s[i]-48)*10+s[i+1]-48;
- //cout<<num<<endl;
- if(visit[num]==false&&num<=n&&num!=0){
- visit[num]=true;
- v.push_back(num);
- backtrack(i+2);
- if(v.size()==n)
- return;
- v.pop_back();
- visit[num]=false;
- }
- }
- int main()
- {
- cin>>s;
- sz=s.size();
- if(sz<=9){
- cout<<s[0];
- for(int i=1;i<sz;i++)
- cout<<' '<<s[i];
- cout<<endl;
- }
- else{
- memset(visit,false,sizeof(visit));
- n=9+(sz-9)/2;
- backtrack(0);
- cout<<v[0];
- for(int i=1;i<v.size();i++)
- cout<<' '<<v[i];
- cout<<endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement