Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define N 1000
- struct intervalo{
- int inicio,fim;
- };
- typedef struct intervalo Struct;
- Struct encontra(int seq[N], int alvo,int size) {
- Struct intervalo;
- int sum;
- for(int i=1;i<=size;i++)
- if(seq[i]==alvo){
- intervalo.inicio=intervalo.fim=i;return intervalo; //caso base onde há um ponto que é igual ao alvo
- }
- for(int i=1;i<=size;i++){
- for(int j=i;j<=size;j++){
- sum=0;
- for(int t=j;t<=size;t++){
- if((sum+=seq[t])==alvo){intervalo.inicio=j;intervalo.fim=t;} //encontra intervalo de somas
- }
- }
- }
- if(intervalo.inicio!=alvo){intervalo.fim=-1;} //não encontra
- return intervalo;
- }
- int main(int argc, const char * argv[]){
- int size,seq[N],alvo;
- seq[0]=0;
- Struct resultado;
- scanf("%d",&size);
- for(int i=1;i<=size;i++){
- scanf("%d",&seq[i]);
- }
- scanf("%d",&alvo);
- resultado=encontra(seq,alvo,size);
- if(resultado.fim==-1){
- printf("nenhuma subsequencia soma %d\n",alvo);
- }else if(resultado.inicio==resultado.fim){
- printf("s[%d] = %d\n",resultado.inicio,alvo);
- }else if(resultado.fim-resultado.inicio==1){
- printf("s[%d] + s[%d] = %d\n",resultado.inicio,resultado.fim,alvo);
- }else{
- printf("s[%d] + ... + s[%d] = %d\n",resultado.inicio,resultado.fim,alvo);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement