Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include <cstdlib>
- #include <ctime>
- #include<vector>
- #include<algorithm>
- using namespace std;
- int vt[1001];
- int vt1[1001];
- vector<int> dedoa;
- vector<int> copy_dedoa;
- void init()
- {
- for(int i=1;i<=1000;i++)
- vt[i]=i;
- }
- int get_h_v1(int tam1[])
- {
- int h=0;
- for(int i=1;i<1000;i++)
- {
- for(int j=i+1;j<=1000;j++)
- {
- if(tam1[i]+i==tam1[j]+j||tam1[i]-i==tam1[j]-j)
- {
- h++;
- dedoa.push_back(i);
- dedoa.push_back(j);
- }
- }
- }
- return h;
- }
- int get_h_v2(int tam1[])
- {
- int h=0;
- for(int i=1;i<1000;i++)
- {
- for(int j=i+1;j<=1000;j++)
- {
- if(tam1[i]+i==tam1[j]+j||tam1[i]-i==tam1[j]-j)
- {
- h++;
- }
- }
- }
- return h;
- }
- void swap(int &a,int &b)
- {
- int c=a;
- a=b;
- b=c;
- }
- int sinhlanggieng()
- {
- int q1,q2,h2,h1;
- dedoa.clear();
- h1=get_h_v1(vt);
- tam:q1=dedoa[rand()%dedoa.size()];
- do{
- q2=dedoa[rand()%dedoa.size()];
- }while(q2==q1);
- swap(vt[q1],vt[q2]);
- h2=get_h_v2(vt);
- if(h2>=h1)
- {
- swap(vt[q1],vt[q2]);
- goto tam;
- }
- return h2;
- }
- int main()
- {
- srand(time(NULL));
- init();
- int h;
- do{
- h=sinhlanggieng();
- cout<<h<<endl;
- }while(h>0);
- //cout<<get_h(vt);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement