Advertisement
Adytzu04

l1p2-SDA-Permutari

Feb 25th, 2013
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.03 KB | None | 0 0
  1. //permutari.h
  2. #ifndef         L2P2_H
  3. #define         L2P2_H
  4. #define MAXN 20
  5. #pragma once
  6.  
  7. #include <iostream>
  8.  
  9. using namespace std;
  10.  
  11. int eValid(int k,int v[]);
  12. void afisare(int n,int &nrSol,int v[]);
  13. void genPerm(int n,int &nrSol,int v[],int k);
  14.  
  15.  
  16.  
  17. #endif;
  18.  
  19. //permutari.cpp
  20.  
  21. #include"permutari.h"
  22.  
  23. int eValid(int k,int v[])
  24. {
  25.     int i,rez;
  26.  
  27.     for(rez=1,i=0;rez&&(i<k);i++)
  28.         rez=rez&&(v[k]!=v[i]);
  29.  
  30.     return rez;
  31. }
  32.  
  33. void afisare(int n,int &nrSol,int v[])
  34. {
  35.     int i;
  36.  
  37.     cout<<++nrSol<<" : ";
  38.     for(i=0;i<n;i++)
  39.     {
  40.         cout<<v[i]<<" ";
  41.         cout<<endl;
  42.     }
  43. }
  44.  
  45. void genPerm(int n,int &nrSol,int v[],int k)
  46. {
  47.     if(k==n)
  48.     {
  49.         afisare(n,nrSol,v);
  50.     }
  51.     else
  52.     {  
  53.         int i;
  54.             for(i=1;i<=n;i++)
  55.             {
  56.                 v[k]=i;
  57.                 if(eValid(k,v))
  58.                     genPerm(n,nrSol,v,k+1);
  59.             }
  60.     }
  61. }
  62.  
  63. //main.cpp
  64. #include"permutari.h"
  65.  
  66. int main()
  67. {
  68.     int n,v[MAXN],nrSol;
  69.     nrSol=0;
  70.  
  71.         do{
  72.             cout<<"n=";
  73.             cin>>n;
  74.         }while((n<=0)||(n>MAXN));
  75.  
  76.         genPerm(n,nrSol,v,0);
  77.         cout<<"nrSol="<<nrSol<<endl;
  78.  
  79.         system("Pause");
  80.  
  81.         return 0;
  82.        
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement