Advertisement
Guest User

asdasda

a guest
Jun 29th, 2016
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.15 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. unsigned long long qtdPD;
  5. unsigned long long qtdFB;
  6.  
  7. int max(int a, int b){
  8.     if(b>a)
  9.         return b;
  10.     return a;
  11. }
  12.  
  13.  
  14. void forcaBruta(int *vet, int tam){
  15.     int maiorSoma =0;
  16.     int iniM = 0;
  17.     int fimM = 0;
  18.     int i, j;
  19.  
  20.     int somaAtual =0;
  21.     for(i=0; i<tam;i++){
  22.             somaAtual = 0;  qtdFB++;
  23.             for(j=i; j<tam; j++){
  24.                     somaAtual = somaAtual + vet[j]; qtdFB++;
  25.                     if(somaAtual >= maiorSoma){
  26.                         maiorSoma = somaAtual; qtdFB++;
  27.                         iniM=i; qtdFB++;
  28.                         fimM=j; qtdFB++;
  29.                     }
  30.             }
  31.     }
  32.     if (maiorSoma == 0)
  33.         printf("FB: Maior soma: 0, sublista vazia\n");
  34.     else
  35.         printf("FB: Maior soma: %d, comeca %d, termina %d\n", maiorSoma, iniM, fimM);
  36. }
  37.  
  38.  
  39. int progDin(int *vet, int tam){
  40.     int i, inicio, iniTemp,fim, maior;
  41.     maior = iniTemp = inicio = fim = 0;
  42.  
  43.     int soma = 0;
  44.     for(i=0; i<tam; i++){
  45.         soma = max(soma + vet[i], vet[i]);   qtdPD++;
  46.         if(soma < 0){
  47.             soma = 0;   qtdPD++;
  48.             iniTemp = i+1;  qtdPD++;
  49.             }
  50.         if(soma > maior){
  51.             maior = soma; qtdPD++;
  52.             fim = i;  qtdPD++;
  53.             inicio = iniTemp; qtdPD++;
  54.             }
  55.     }
  56.     if (maior == 0)
  57.         printf("PD: Maior soma: 0, sublista vazia\n");
  58.     else
  59.         printf("PD: Maior soma: %d, comeca %d, termina %d\n", maior, inicio, fim);
  60. }
  61.  
  62.  
  63. int main(){
  64.     int tam;
  65.     int *vet;
  66.     int i;
  67.     printf("Compara os algoritmos usando forca bruta e programacao dinamica que resolvem o problema do subvetor com maior soma\n");
  68. //    printf("Insira o tamanho do vetor\n");
  69.     scanf("%d", &tam);
  70.  
  71.     vet = (int*) malloc(sizeof(int)*tam);
  72. //   printf("Agora insira os elementos do vetor\n");
  73.    for(i=0; i<tam;i++){
  74.         scanf("%d", &vet[i]);
  75.    }
  76.     qtdFB=qtdPD=0;
  77.     progDin(vet, tam);
  78.     forcaBruta(vet, tam);
  79.     printf("\nEm forca bruta tiveram: %lu atribuicoes", qtdFB);
  80.     printf("\nEm programacao dinamica tiveram: %lu atribuicoes", qtdPD);
  81.     return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement