Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma warning(disable:4996)
- #include<iostream>
- using namespace std;
- #include<conio.h>
- #include<stdlib.h>
- #include<stdio.h>
- #include<time.h>
- int *initializare() {
- int M[] = { 1,2,3,4,5,6,7,8 }, lungime_m = 8;
- int *configuratie;
- configuratie = (int*)malloc(8 * sizeof(int));
- int i = 0;
- time_t t;
- srand((unsigned)(time(&t)));
- while (lungime_m > 0) {
- int g = rand() % lungime_m;
- configuratie[i++] = M[g];
- for (int j = g; j < lungime_m - 1; j++)
- M[j] = M[j + 1];
- lungime_m--;
- }
- return configuratie;
- }
- int evaluare(int *configuratie) {
- int erori = 0;
- for(int i=0;i<7;i++)
- for (int j = i + 1; j < 8; j++)
- if (abs(configuratie[i] - configuratie[j]) == abs(i - j))
- erori++;
- return erori;
- }
- int *perturbare(int *configuratie) {
- int x, y, temp;
- int lungime_config = 8;
- x = rand() % lungime_config;
- y = rand() % lungime_config;
- while (x == y)
- y = rand() % lungime_config;
- temp = configuratie[x];
- configuratie[x] = configuratie[y];
- configuratie[y] = temp;
- return configuratie;
- }
- //
- void main() {
- int eval_curenta, *configuratie, *configuratie1;
- configuratie1= (int*)malloc(8 * sizeof(int));
- configuratie = initializare();
- cout << "la inceput:" << endl;
- for (int i = 0; i < 8; i++)
- cout << configuratie[i] << " ";
- for (int i = 0; i < 100; i++) {
- eval_curenta = evaluare(configuratie);
- configuratie1 = perturbare(configuratie);
- if (evaluare(configuratie1) < evaluare(configuratie))
- for (int j = 0; j < 8; j++)
- configuratie[j] = configuratie1[j];
- }
- cout << endl;
- cout << "La final:" << endl;
- for (int i = 0; i < 8; i++)
- cout << configuratie[i] << " ";
- _getch();
- }
Add Comment
Please, Sign In to add comment