Advertisement
heian

Untitled

Jul 9th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.18 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int n;
  6.  
  7. //recursiv, varianta foarte ineficienta
  8. int Al_N_lea_termen_Fibonacci(int n)
  9. {
  10. if(n==1 || n==2)
  11. return 1;
  12. return Al_N_lea_termen_Fibonacci(n-1) + Al_N_lea_termen_Fibonacci(n-2);
  13. }
  14.  
  15. //cu vector, complexitate O(n)
  16. int Fib(int n)
  17. {
  18. int a[n+1];
  19. a[1] = 1;
  20. a[2] = 1;
  21. for(int i=3;i<=n;++i)
  22. a[i] = a[i-1] + a[i-2];
  23. return a[n];
  24. }
  25.  
  26. //fara vector, complexitate O(n)
  27. int Fib2(int n)
  28. {
  29. int a, a1, a2;
  30. a1 = 1;
  31. a2 = 1;
  32. for(int i=3;i<=n;++i)
  33. {
  34. a = a1 + a2;
  35. a2 = a1;
  36. a1 = a;
  37. }
  38. return a;
  39. }
  40.  
  41. //sa se spuna daca x este seu nu un termen al sirului Fibonacci
  42. int Fib3(int x)
  43. {
  44. int f, f1, f2, i;
  45. f1 = 1;
  46. f2 = 1;
  47. f = 2;
  48. for(i=3; f<x;)
  49. {
  50. f = f1 + f2;
  51. f2 = f1;
  52. f1 = f;
  53. i++;
  54. }
  55. //x=3
  56. //1 1 2 3 5 8
  57. //1 2 3 4 5 6
  58. if(f==x)
  59. return i-1;///de reparat aici. de ce e i-1?
  60. return -1;//inseamna ca x nu apartine sirului Fibonacci
  61. }
  62.  
  63. int Combinari(int n, int k)
  64. {
  65. int minim, maxim;
  66. maxim = k;
  67. minim = n-k;
  68. if(minim > maxim)
  69. {
  70. maxim = n-k;
  71. minim = k;
  72. }
  73.  
  74. int numarator, numitor,i;
  75. numarator=1;
  76. for(i=maxim+1;i<=n;++i)
  77. numarator*=i;
  78.  
  79.  
  80. numitor=1;
  81. for(i=1;i<=minim;++i)
  82. numitor*=i;
  83.  
  84.  
  85. return numarator/numitor;
  86. }
  87.  
  88. void Succesor(int c[], int k,int n)
  89. {
  90. ///elementele sunt numerotate de la 1 la k
  91. if(c[k]<n)
  92. {
  93. c[k]++;
  94. return;
  95. }
  96. Succesor(c, k-1, n-1);
  97. c[k] = c[k-1] + 1;
  98. }
  99.  
  100. int main()
  101. {
  102. /*int n;
  103. cin>>n;
  104. cout<<Al_N_lea_termen_Fibonacci(n)<<"\n";
  105. cout<<Fib(n)<<"\n";
  106. cout<<Fib2(n)<<"\n";
  107.  
  108. cout<<Fib3(34)<<"\n";
  109.  
  110. cout<<"C(10, 4) = "<<Combinari(10, 4)<<"\n";*/
  111.  
  112. int n, k;
  113. n = 8;
  114. k = 6;
  115.  
  116. ///c maxim(care nu mai are succesor) : 3 4 5 6 7 8
  117.  
  118. int c[] = {0, 1, 2, 3, 6, 7, 8};
  119. ///succesorul este 1 2 4 5 6 7
  120. Succesor(c, k, n);
  121. cout<<"succesorul lui c este:\n";
  122. for(int i=1;i<=k;++i)
  123. cout<<c[i]<<" ";
  124. cout<<"\n";
  125. return 0;
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement