Advertisement
monyca98

permutari backtracking

May 30th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.88 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3. int succesor(int st[20],int n,int k)
  4. {   if(st[k]<n)
  5.     {   st[k]=st[k]+1;
  6.         return 1;
  7.     }
  8.     else
  9.         return 0;
  10. }
  11. int valid(int st[20],int k)
  12. {   for(int i=1;i<k;i++)
  13.         if(st[k]==st[i])
  14.             return 0;
  15.     return 1;
  16. }
  17. int tipar(int st[20],int n)
  18. {   for(int i=1;i<=n;i++)
  19.         cout<<st[i];
  20.     cout<<endl;
  21. }
  22. void bt(int n,int k,int st[20])
  23. {   int as,ev;
  24.     k=1;
  25.     st[k]=0;
  26.     while(k>0)
  27.     {   as=1;
  28.         ev=0;
  29.         while(as && !ev)
  30.         {   as=succesor(st,n,k);
  31.             if(as)
  32.                 ev=valid(st,k);
  33.         }
  34.         if(as)
  35.             if(k==n)
  36.                 tipar(st,n);
  37.             else
  38.             {   k++;
  39.                 st[k]=0;
  40.              }
  41.         else
  42.             k--;
  43.     }
  44. }
  45. int main()
  46. {   int n,k,st[20];
  47.     cin>>n;
  48.     bt(n,k,st);
  49.  
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement