Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- unsigned long long qtdPD;
- unsigned long long qtdFB;
- int max(int a, int b){
- if(b>a)
- return b;
- return a;
- }
- void forcaBruta(int *vet, int tam){
- int maiorSoma =0;
- int iniM = 0;
- int fimM = 0;
- int i, j;
- int somaAtual =0;
- for(i=0; i<tam;i++){
- somaAtual = 0; qtdFB++;
- for(j=i; j<tam; j++){
- somaAtual = somaAtual + vet[j]; qtdFB++;
- if(somaAtual >= maiorSoma){
- maiorSoma = somaAtual; qtdFB++;
- iniM=i; qtdFB++;
- fimM=j; qtdFB++;
- }
- }
- }
- if (maiorSoma == 0)
- printf("FB: Maior soma: 0, sublista vazia\n");
- else
- printf("FB: Maior soma: %d, comeca %d, termina %d\n", maiorSoma, iniM, fimM);
- }
- int progDin(int *vet, int tam){
- int i, inicio, iniTemp,fim, maior;
- maior = iniTemp = inicio = fim = 0;
- int soma = 0;
- for(i=0; i<tam; i++){
- soma = max(soma + vet[i], vet[i]); qtdPD++;
- if(soma < 0){
- soma = 0; qtdPD++;
- iniTemp = i+1; qtdPD++;
- }
- if(soma > maior){
- maior = soma; qtdPD++;
- fim = i; qtdPD++;
- inicio = iniTemp; qtdPD++;
- }
- }
- if (maior == 0)
- printf("PD: Maior soma: 0, sublista vazia\n");
- else
- printf("PD: Maior soma: %d, comeca %d, termina %d\n", maior, inicio, fim);
- }
- int main(){
- int tam;
- int *vet;
- int i;
- printf("Compara os algoritmos usando forca bruta e programacao dinamica que resolvem o problema do subvetor com maior soma\n");
- // printf("Insira o tamanho do vetor\n");
- scanf("%d", &tam);
- vet = (int*) malloc(sizeof(int)*tam);
- // printf("Agora insira os elementos do vetor\n");
- for(i=0; i<tam;i++){
- scanf("%d", &vet[i]);
- }
- qtdFB=qtdPD=0;
- progDin(vet, tam);
- forcaBruta(vet, tam);
- printf("\nEm forca bruta tiveram: %lu atribuicoes", qtdFB);
- printf("\nEm programacao dinamica tiveram: %lu atribuicoes", qtdPD);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement