madalinaradu

IA Aranjarea damelor

Apr 11th, 2019
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.60 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 8
  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.     for(int i=0; i<N;i++){
  28.         elemente[i]=i+1;
  29.     }
  30.     int lungime=N, contor=0;
  31.     while(lungime>0){
  32.         int poz=rand()%lungime;
  33.         permutare[contor++]=elemente[poz];
  34.         for(int i=poz; i<lungime-1; i++)
  35.             elemente[i]=elemente[i+1];
  36.             lungime--;
  37.     }
  38. for (int i = 0; i < N; i++)
  39.     cout<<permutare[i] <<"   ";
  40. cout<<endl;
  41. cout<<evaluare(permutare) <<" ";
  42. cout<<endl;
  43.  
  44. for(int k=0;(gasit==0 && k<100); k++){
  45.  
  46. for(int i=0; i<N; i++){//perm[N] este copia
  47.     perm[i]=permutare[i];
  48.     //cout<<perm[i]<<"   ";
  49.  
  50. }
  51.  
  52.     int x=rand()%N;
  53.     int y=rand()%N;
  54.     while(x==y)
  55.         y=rand()%N;
  56.     int temp=perm[x];
  57.     perm[x]=perm[y];
  58.     perm[y]=temp;
  59.  
  60. for(int i=0; i<N; i++)
  61.     cout<<permutare[i]<<"   ";
  62. cout<<endl;
  63. cout<<evaluare(permutare) <<" ";
  64. cout<<endl;
  65.  
  66. if(evaluare(perm)<evaluare(permutare))
  67.     for(int i=0; i<N; i++)
  68.         permutare[i]=perm[i];
  69.  
  70.   if(evaluare(permutare)==0)
  71.     gasit=1;
  72. }
  73.  
  74.      }
  75.  
  76. for(int i=0; i<N; i++)
  77.     cout<<permutare[i]<<"   ";
  78. cout<<endl;
  79. cout<<evaluare(permutare) <<" ";
  80. cout<<endl;
  81.  
  82. return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment