madalinaradu

IA Pb Damelor

May 29th, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.06 KB | None | 0 0
  1.  
  2. #include<iostream>
  3. #include<conio.h>
  4. #include<iomanip>
  5. #include<time.h>
  6. #include<stdlib.h>
  7. #define N 4
  8.  
  9. using namespace std;
  10.  
  11. int evaluare(int permutare[]) {
  12.     int erori=0;
  13.     for(int i=1; i<N-1; i++) {
  14.         for(int j=i+1; j<N; j++) {
  15.             if(abs(permutare[i]-permutare[j])==abs(i-j))
  16.                 erori++;
  17.         }
  18.     }
  19.     return erori;
  20. }
  21.  
  22. int main() {
  23.     int elemente[N], permutare[N], perm[N];
  24.     srand(time(0));
  25.     int gasit=0;
  26.     while(gasit==0) {
  27.         //pune in elemente numerele de la 1 la N
  28.         for(int i=0; i<N; i++) {
  29.             elemente[i]=i+1;
  30.         }
  31.         // genereaza o permutare aleator
  32.         int lungime=N, contor=0;
  33.         while(lungime>0) {
  34.             int poz=rand()%lungime;
  35.             permutare[contor++]=elemente[poz];
  36.             for(int i=poz; i<lungime-1; i++)
  37.                 elemente[i]=elemente[i+1];
  38.             lungime--;
  39.         }
  40.         for (int i = 0; i < N; i++)
  41.             cout<<permutare[i] <<"   ";
  42.         cout<<endl;
  43.         cout<<evaluare(permutare) <<" ";
  44.         cout<<endl;
  45.  
  46.         for(int k=0; (gasit==0 && k<100); k++) {
  47.  
  48.             for(int i=0; i<N; i++) { //perm[N] este copia
  49.                 perm[i]=permutare[i];
  50.                 //cout<<perm[i]<<"   ";
  51.  
  52.             }
  53.             //face o mutatie
  54.             int x=rand()%N;
  55.             int y=rand()%N;
  56.             while(x==y)
  57.                 y=rand()%N;
  58.             int temp=perm[x];
  59.             perm[x]=perm[y];
  60.             perm[y]=temp;
  61.  
  62.             for(int i=0; i<N; i++)
  63.                 cout<<permutare[i]<<"   ";
  64.             cout<<endl;
  65.             cout<<evaluare(permutare) <<" ";
  66.             cout<<endl;
  67.  
  68.             if(evaluare(perm)<evaluare(permutare))
  69.                 for(int i=0; i<N; i++)
  70.                     permutare[i]=perm[i];
  71.  
  72.             if(evaluare(permutare)==0)
  73.                 gasit=1;
  74.         }
  75.  
  76.     }
  77.  
  78.     for(int i=0; i<N; i++)
  79.         cout<<permutare[i]<<"   ";
  80.     cout<<endl;
  81.     cout<<evaluare(permutare) <<" ";
  82.     cout<<endl;
  83.  
  84.     return 0;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment