Advertisement
Alx09

Untitled

May 21st, 2020
1,566
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.04 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int n, s, v[12], t;
  4. FILE *f;
  5. void Init(int k) {
  6.     v[k] = 0; // initiailzm elemtenul cu 0
  7. }
  8.  
  9. int Succesor(int k) {
  10.     if (v[k] <= t) { // verificam daca mai avem succsoer si daca este incrementam
  11.         v[k]++;
  12.         return 1;
  13.     }
  14.     return 0;
  15. }
  16. int Valid(int k) {
  17.     int i;
  18.     return k <= n;
  19. }
  20. Print() {
  21.     int i;
  22.     for (i = 1; i <= n; i++)
  23.         fprintf(f, "%d ", v[i]);
  24.     fprintf(f, "\n");
  25. }
  26.  
  27. int Solution(int k) {
  28.     if (k != n)
  29.         return 0;
  30.     int i = 1, suma = 0;
  31.     for (i = 1; i <= k; i++)
  32.         suma += v[i];
  33.     if (suma == s)
  34.         return 1;
  35.     return 0;
  36. }
  37. void Back() {
  38.     int k = 1, isS, isV;
  39.     k = 1; Init(k);
  40.     while (k > 0) {
  41.         isS = 0; isV = 0;
  42.         if (k <= n)
  43.             do {
  44.                 isS = Succesor(k);
  45.                 if (isS) isV = Valid(k);
  46.             } while (isS && !isV);
  47.             if (isS)
  48.                 if (Solution(k))
  49.                     Print();
  50.                 else {
  51.                     k++; Init(k);  
  52.                 }
  53.             else
  54.                 k--;
  55.     }
  56. }
  57.  
  58. int main() {
  59.  
  60.     f = fopen("in.txt", "r");
  61.     fscanf(f, " %d%d%d", &n,&t, &s);
  62.     fclose(f);
  63.     f = fopen("prada.txt", "w");
  64.     Back();
  65.    
  66.  
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement