int main() { elemento **mat; int ntestes; char sequencia1[100]; char sequencia2[100]; char novaseq1[200]= ""; char novaseq2[200]= ""; //tamanho = quantidade de elementos iguais int tamanho; //n = tamanho sequencia 1 int n; //m = tamanho sequencia 2 int m; //ntestes é a quantidade de testes que terei no meu programa scanf("%d", &ntestes); // esse for pega as 2 proximas sequencias e resolve o problema pra elas, e assim para todo o par de sequencias for(int i=0;i<ntestes;i++) { scanf("%s", sequencia1); scanf("%s", sequencia2); n = strlen(sequencia1); m = strlen(sequencia2); //funcao que cria a matriz alinhamento(sequencia1,sequencia2,&mat); //funcao recursiva que pega o resultado e coloca tamanho = resposta(mat,sequencia1,sequencia2,novaseq1,novaseq2,m,n,0); printf("Tamanho: %d",tamanho); printf("\nAlinhamento: \n"); printf("%s \n",novaseq1); printf("%s \n",novaseq2); strset(novaseq1,0); strset(novaseq2,0); free(&mat); printf("\n"); } return 0; }
int main(int argc, char *argv[]) { unsigned int *tams, *indexp; Vertex *Mtz; char **S, **resp, c='a'; FILE *input = stdin; if (argc > 1) { input = fopen( argv[1], "r"); } fscanf( input, "%d %d %d %u", &r, &q, &g, &k); if (k > sizeof(VUTIL)) { printf("O valor maximo de k e: %d", (int) sizeof(VUTIL)); return 1; } P2k = (int) pow(2, k); S = (char **) malloc( k * sizeof (char *)); resp = (char **) malloc( k * sizeof (char *)); tams = (unsigned int*) malloc( k * sizeof (unsigned int)); indexp = (unsigned int*) malloc( k * sizeof (unsigned int)); for ( unsigned int i = 0; i < k; i++ ) { S[i] = (char *) malloc( NMAX * sizeof (char)); resp[i] = (char *) malloc( NMAX * sizeof (char)); resp[i][0] = c++; resp[i][1] = ':'; resp[i][2] = ' '; fscanf(input, "%s", S[i]); tams[i] = strlen(S[i]) + 1; indexp[i] = 1; } fclose(input); for (unsigned int i = k - 1; i > 0; i--) { for (unsigned int j = 0; j < i; j++) { indexp[j] *= tams[i]; } } Mtz = (Vertex *) malloc( tams[0] * indexp[0] * sizeof (Vertex)); memset( Mtz, 0, tams[0] * indexp[0] * sizeof (Vertex)); /* Preprocessando restrições. */ zeros(indexp, tams, Mtz); /* Procurado melhor alinhamento. */ printf("\npontos: %d\n", alinhamento(S, Mtz, tams, indexp)); print(S, Mtz, indexp, tams, resp); for ( unsigned int i = 0; i < k; i++ ) { free(S[i]); free(resp[i]); } free(resp); free(S); free(tams); free(indexp); return 0; }