Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define N 1000
  4.  
  5. struct intervalo{
  6. int inicio,fim;
  7. };
  8.  
  9. typedef struct intervalo Struct;
  10.  
  11. Struct encontra(int seq[N], int alvo,int size) {
  12. Struct intervalo;
  13. int sum;
  14. for(int i=1;i<=size;i++)
  15. if(seq[i]==alvo){
  16. intervalo.inicio=intervalo.fim=i;return intervalo; //caso base onde há um ponto que é igual ao alvo
  17. }
  18. for(int i=1;i<=size;i++){
  19. for(int j=i;j<=size;j++){
  20. sum=0;
  21. for(int t=j;t<=size;t++){
  22. if((sum+=seq[t])==alvo){intervalo.inicio=j;intervalo.fim=t;} //encontra intervalo de somas
  23. }
  24. }
  25. }
  26. if(intervalo.inicio!=alvo){intervalo.fim=-1;} //não encontra
  27. return intervalo;
  28.  
  29. }
  30. int main(int argc, const char * argv[]){
  31. int size,seq[N],alvo;
  32. seq[0]=0;
  33. Struct resultado;
  34. scanf("%d",&size);
  35. for(int i=1;i<=size;i++){
  36. scanf("%d",&seq[i]);
  37. }
  38. scanf("%d",&alvo);
  39.  
  40. resultado=encontra(seq,alvo,size);
  41.  
  42.  
  43.  
  44. if(resultado.fim==-1){
  45. printf("nenhuma subsequencia soma %d\n",alvo);
  46. }else if(resultado.inicio==resultado.fim){
  47. printf("s[%d] = %d\n",resultado.inicio,alvo);
  48. }else if(resultado.fim-resultado.inicio==1){
  49. printf("s[%d] + s[%d] = %d\n",resultado.inicio,resultado.fim,alvo);
  50. }else{
  51. printf("s[%d] + ... + s[%d] = %d\n",resultado.inicio,resultado.fim,alvo);
  52. }
  53. return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement