Advertisement
Pley

Problema backtraking

Jun 28th, 2016
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. #include<iostream>
  2.  
  3. void tipar(int *x,unsigned n)
  4. {
  5. static unsigned nr_sol = 1;
  6. std::cout << "Solutia numarul " << nr_sol++ << ": ";
  7. for (int i = 1; i < n; i++)
  8. std::cout << x[i] << " ";
  9. std::cout << endl;
  10. }
  11. bool conditie(int *x, unsigned k)
  12. {
  13. for (int i = 1; i < k;i++)
  14. if (x[k] == x[i])return false;
  15. return true;
  16. }
  17. void ciur_prim(int *v, unsigned nr_numere)
  18. {
  19. unsigned i = 0;
  20. int prim[100];
  21. for (int t = 2; t <= 100; t++)
  22. prim[i] = 1;
  23. for (int c = 2; c <= 100; c++)
  24. {
  25. for (int j = c*c; j < 100; j += c)
  26. prim[j] = 0;
  27. }
  28. int ok = 2,vf = 1,cont=0;
  29. for (int i = 2; i <= 100; i++)
  30. {
  31. if (prim[i] && ok % 2 == 0)
  32. {
  33. v[vf++] = i;
  34. cont++;
  35. }
  36. if (prim[i])
  37. ok++;
  38. if (cont == nr_numere)
  39. break;
  40. }
  41. }
  42. void bkt(int *x, int *prim, unsigned k, unsigned n)
  43. {
  44. if (k == n+1)
  45. tipar(x, k);
  46. else
  47. for (int i = 1; i <= n; i++)
  48. {
  49. x[k] = prim[i];
  50. if (conditie(x, k))
  51. bkt(x,prim,k+1,n);
  52. }
  53. }
  54. void main(void)
  55. {
  56. int v[10],x[10];
  57. unsigned n;
  58. std::cin >> n;
  59. ciur_prim(v, n);
  60. bkt(x,v, 1, n);
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement