Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- #include <cmath>
- using namespace std;
- int st[30], n,k,as,ev;
- void init(int k, int st[])
- {
- st[k]=96;
- }
- void succesor(int k, int st[], int &as)
- {
- if (st[k]<97+n/2)
- {
- st[k]++;
- as=1;
- }
- else
- as=0;
- }
- void valid(int k, int st[], int &ev)
- {int i;
- ev=1;
- for (i=1; i<=k; i++)
- if(abs(st[i]-st[i-1])!=1)
- ev=0;
- if(k==n-4&&abs(st[k+1]-st[k])!=1)
- ev=0;
- }
- int solutie(int k)
- {
- return (k==n-4);
- }
- void tipar()
- {
- cout<<"ab";
- for (int i=1; i<=n-4; i++)
- cout<<char (st[i]);
- cout<<"ba";
- cout<<endl;
- }
- int main()
- {
- cin>>n;
- if(n==3)
- cout<<"aba";
- else
- {st[0]=98;
- st[n-3]=98;
- k=1;
- init(k,st);
- while (k>0)
- {
- do
- {
- succesor(k,st,as);
- if (as)
- valid(k,st,ev);
- }
- while ((as==1) && (!((ev==1)&&(as==1))));
- if (as==1)
- if (solutie(k))
- tipar();
- else
- {
- k++;
- init(k,st);
- }
- else
- k--;
- }}
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement