Advertisement
Guest User

Untitled

a guest
May 23rd, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. #include<iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. #include<vector>
  5. #include<algorithm>
  6. using namespace std;
  7. int vt[1001];
  8. int vt1[1001];
  9. vector<int> dedoa;
  10. vector<int> copy_dedoa;
  11. void init()
  12. {
  13. for(int i=1;i<=1000;i++)
  14. vt[i]=i;
  15. }
  16. int get_h_v1(int tam1[])
  17. {
  18. int h=0;
  19. for(int i=1;i<1000;i++)
  20. {
  21. for(int j=i+1;j<=1000;j++)
  22. {
  23. if(tam1[i]+i==tam1[j]+j||tam1[i]-i==tam1[j]-j)
  24. {
  25. h++;
  26. dedoa.push_back(i);
  27. dedoa.push_back(j);
  28. }
  29. }
  30. }
  31. return h;
  32. }
  33. int get_h_v2(int tam1[])
  34. {
  35. int h=0;
  36. for(int i=1;i<1000;i++)
  37. {
  38. for(int j=i+1;j<=1000;j++)
  39. {
  40. if(tam1[i]+i==tam1[j]+j||tam1[i]-i==tam1[j]-j)
  41. {
  42. h++;
  43. }
  44. }
  45. }
  46. return h;
  47. }
  48. void swap(int &a,int &b)
  49. {
  50. int c=a;
  51. a=b;
  52. b=c;
  53. }
  54. int sinhlanggieng()
  55. {
  56. int q1,q2,h2,h1;
  57. dedoa.clear();
  58. h1=get_h_v1(vt);
  59. tam:q1=dedoa[rand()%dedoa.size()];
  60. do{
  61. q2=dedoa[rand()%dedoa.size()];
  62. }while(q2==q1);
  63. swap(vt[q1],vt[q2]);
  64. h2=get_h_v2(vt);
  65. if(h2>=h1)
  66. {
  67. swap(vt[q1],vt[q2]);
  68. goto tam;
  69. }
  70. return h2;
  71. }
  72. int main()
  73. {
  74. srand(time(NULL));
  75. init();
  76. int h;
  77. do{
  78. h=sinhlanggieng();
  79. cout<<h<<endl;
  80. }while(h>0);
  81. //cout<<get_h(vt);
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement