Guest User

Untitled

a guest
Jun 17th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.71 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<malloc.h>
  3. #include<string.h>
  4. int NivelStiva[100];/*tine evidenta nivelului stivei la bktr*/
  5. char string[100][50];/*primul sir de cuvinte*/
  6. char AlDoileaSet[100][50];/*al doilea*/
  7.  int n;
  8. int k,m,lg,q;
  9. int p;
  10. FILE *f;
  11. int FormezCuvinte(int p)
  12. {
  13.  
  14.     int i,j;
  15.     char a[50],b[50];
  16.     /*creaza cuvinte formate din primele litere respectiv ultimile*/
  17.     for (i=0;i<=p;i++)
  18.     {
  19. a[i]=string[NivelStiva[i]][0];
  20. b[i]=string[NivelStiva[i]][lg-1];
  21.     }
  22.     a[i]='\0';
  23.     b[i]='\0';
  24.     /*cauta in al doilea set cuvintele formate*/
  25. for (i=0;i<m;i++)
  26. if (strcmp(AlDoileaSet[i],a)==0)
  27. for (j=0;j<m;j++)
  28. if (strcmp(AlDoileaSet[j],b)==0)
  29. {
  30. return 1;
  31. }
  32. return 0;
  33. }
  34. void Solutie(int p)
  35. {
  36.         int i;
  37. /*daca solutia este valida o afiseaza*/    
  38. if (FormezCuvinte(p)==1)
  39. {
  40.     for (i=0;i<=p;i++)
  41.     {
  42.         printf("%s",string[NivelStiva[i]]);
  43.     printf("\n");
  44.     }
  45.     printf("\n");
  46. }
  47.     return;
  48. }
  49. int valid (int p)
  50. {
  51.     /* daca gaseste 2 cuvinte identice consecutive trece cu forul  mai departe si nu adauga la solutia finala*/
  52.     if (p>0 && strcmp(&string[NivelStiva[p]][0],&string[NivelStiva[p-1]][0])==0)
  53.         return 0;
  54.     else return 1;
  55. }
  56. /*bktr pentru generarea  solutiilor*/
  57. void bktr(int p)
  58. {
  59.     int j;
  60.     /*face combinari de n cuvinte luate cate k*/
  61.     for (j=0;j<n;j++)
  62.     {
  63.         NivelStiva[p]=j;
  64.         if (valid(p)==1)
  65.             if (p==k-1)
  66.                 Solutie(p);
  67.                 else
  68.                 bktr(p+1);
  69.     }
  70. }
  71.  
  72. void main()
  73. {
  74.  int i;
  75.     FILE  *f;
  76.     /*citire din fisier*/
  77.     f = fopen("ff.txt", "r");
  78.     fscanf(f, "%d", &n);
  79.     for (i = 0; i < n; i++)
  80.         fscanf(f, "%s", &string[i]);
  81.     fscanf(f, "%d", &m);
  82.     for (i = 0; i < m; i++)
  83.         fscanf(f, "%s", AlDoileaSet[i]);
  84.     k = strlen(AlDoileaSet[0]);
  85.     lg = strlen(string[0]);
  86. bktr(0);
  87. fclose(f);
  88.     return;
  89. }
Add Comment
Please, Sign In to add comment