AlexandruDu

Problema Dansatori

Oct 20th, 2020
773
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  int st[20],n;
  5.  char v[20][10];
  6.  void tipar(int k)
  7.  {
  8.      for(int i=1;i<=k;i++)
  9.      cout<<st[i]<<" ";
  10.      cout<<endl;
  11.  }
  12.  int valid(int k)
  13.   { int c1,c2;
  14.       if((k==2)&&(st[k]!=c1))
  15.         return 0;
  16.       if((k==n-1)&&(st[k]!=c2))
  17.         return 0;
  18.       for(int i=1;i<k;i++)
  19.         if(st[k]==st[i])
  20.         return 0;
  21.       return 1;
  22.   }
  23.   int solutie(int k)
  24.   {
  25.       return(k==n);
  26.  
  27.   }
  28.   void bktr()
  29.   {
  30.       int k=1;
  31.       st[k]=0;
  32.       while(k>0)
  33.       {
  34.           if(st[k]<n)
  35.           {
  36.               st[k]++;
  37.               if(valid(k))
  38.                 if(solutie(k))
  39.                    tipar(k);
  40.               else
  41.               {
  42.                   k++;
  43.                   st[k]=0;
  44.               }
  45.  
  46.           }
  47.           else k--;
  48.       }
  49.   }
  50. int main()
  51. { for(int i=1;i<=n;i++)
  52.       cin>>v[i];
  53.     cout<<"n=";cin>>n;
  54.     bktr();
  55.  
  56.     return 0;
  57. }
  58.  
RAW Paste Data