Advertisement
Guest User

Untitled

a guest
Sep 16th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAX 100
  5.  
  6. typedef struct {
  7. char palavras[MAX];
  8. } PALAVRAS;
  9.  
  10. int contar(char A[], char B[])
  11. {
  12. int i;
  13. int menor = strlen(A);
  14. if(menor > strlen(B)) menor = strlen(B);
  15. for(i = 0; i < menor; i++)
  16. {
  17. if(A[i] == '\0' || B[i] == '\0') return i;
  18. else if(A[i] != B[i]) return i + 1;
  19. }
  20. return i;
  21. }
  22.  
  23.  
  24. int bb(PALAVRAS p[], int c, int f, char palavra[], int *cont)
  25. {
  26. if(c > f) return -1;
  27. int meio = (c + f) / 2;
  28. *cont += contar(p[meio].palavras, palavra);
  29. //printf("quero = %s | estou = %s\n", palavra, p[meio].palavras);
  30. int r = strcmp(palavra, p[meio].palavras);
  31. if(!r) return meio;
  32. else if(r < 0) return bb(p, c, meio - 1, palavra, cont);
  33. else return bb(p, meio + 1, f, palavra, cont);
  34. }
  35.  
  36. int main()
  37. {
  38. int n, n_pesquisa, i;
  39. scanf("%d %d", &n, &n_pesquisa);
  40.  
  41. char aleatoria[MAX];
  42.  
  43.  
  44. PALAVRAS p[n];
  45.  
  46. for(i = 0; i < n; i++)
  47. {
  48. getchar();
  49. scanf("%s", p[i].palavras);
  50. }
  51.  
  52. for(i = 0; i < n_pesquisa; i++)
  53. {
  54. getchar();
  55. scanf("%s", aleatoria);
  56. int cont = 0;
  57. int idx = bb(p, 0, n - 1, aleatoria, &cont);
  58. if(idx == -1) printf("NAO %d\n", cont);
  59. else printf("SIM %d\n", cont);
  60. }
  61.  
  62.  
  63. return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement