Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //hill climbing
- #include <iostream>
- #include <vector>
- using namespace std;
- void MakeInitSol(int cnt, vector<int> &a)
- {
- int i, randnr;
- srand(time(NULL));
- for(i = 1; i <= cnt; i++)
- {
- randnr = rand() % 6 + 1;
- a.push_back(randnr);
- }
- }
- int GetValue(vector<int> a)
- {
- int i, val = 0, sum = 0;
- int count_arr[7] = {0};
- vector<int> ::iterator it;
- for(it = a.begin(); it != a.end() - 1; it++)
- {
- sum += *it;
- if( (*(it + 1) - *it) > 3 ||
- (*(it) - *(it + 1)) > 3 )
- val += 5;
- count_arr[*it] ++;
- }
- sum += *it;
- count_arr[*it] ++;
- val += sum/a.size();
- return val;
- }
- int main()
- {
- int i, index, n;
- vector<int> sol_arr, mod_arr;
- vector<int> ::iterator it;
- cout << "n=";
- cin >> n;
- MakeInitSol(n, sol_arr);
- //incerc de 10 ori sa caut o solutie mai buna
- //apoi ma opresc
- for(i = 1; i <= 10; i++)
- {
- mod_arr = sol_arr;
- srand(time(NULL)-i);
- index = rand() % n + 1;
- srand(time(NULL)-i-1);
- mod_arr[index] = rand() % 6 + 1;
- if(GetValue(mod_arr) > GetValue(sol_arr))
- sol_arr = mod_arr;
- }
- for(it = sol_arr.begin(); it != sol_arr.end(); it++)
- cout << *it << " ";
- cout << endl;
- cout << GetValue(sol_arr);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement