Advertisement
Alx09

Untitled

Apr 1st, 2020
354
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define natural unsigned short // csf sa mai pierd timp
  5. #define maxN 10000
  6. unsigned v[maxN], n, m, j;
  7.  
  8. void Init(natural k) {
  9. v[k] = 0;
  10. }
  11. natural Succesor(natural k) {
  12. if (v[k] < n) {
  13. v[k]++;
  14. return 1;
  15. }
  16. return 0;
  17. }
  18.  
  19. natural Valid(natural k) {
  20. natural i;
  21. for (i = 1; i < k; i++)
  22. if (v[i] >= v[k]) return 0;
  23.  
  24. return 1;
  25. }
  26.  
  27. natural Solution(natural k) {
  28. return (k == j);
  29. }
  30.  
  31. void Print() {
  32. natural i;
  33. printf("%d : ", ++m);
  34. for (i = 1; i <= j; i++)
  35. printf("%d ", v[i]);
  36. printf("\n");
  37. }
  38.  
  39. void Back() {
  40. natural k = 1, isS, isV;
  41. Init(k);
  42. while (k > 0) {
  43. isS = 0; isV = 0;
  44. if (k <= n)
  45. do {
  46. isS = Succesor(k);
  47. if (isS) isV = Valid(k);
  48. } while (isS && !isV);
  49. if (isS)
  50. if (Solution(k))
  51. Print();
  52. else {
  53. k++;
  54. Init(k);
  55. }
  56. else
  57. k--;
  58. }
  59. }
  60.  
  61. int main() {
  62. do {
  63. system("cls");
  64. printf("n = "); scanf("%d", &n);
  65. printf("j = "); scanf("%d", &j);// nu mi-a venit alt nume mai bun
  66. } while (n >= maxN && j > n);
  67. printf("Combinarile sunt: \n");
  68. Back();
  69. system("pause");
  70. return 0;
  71.  
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement