Exemplo n.º 1
0
int main(int argc, char *argv[]){


    if (argc == 3){ // Nome do arquivo (argv[0]) mais os dois parâmetros

        char entrada[40] = "entrada/";
        char saida[40] = "saida/";
        int k; // Instâncias de palavras
        char *palavra;
        palavra = (char *) malloc (MAXCHAR * sizeof(char));
        int tamPalavra;

        Matriz estados; // Matriz n x 2, onde n é o tamanho da string e possui dois estados, o atual e o anterior.

        strcat(entrada,argv[1]);
        strcat(saida,argv[2]);

        FILE * inp = abreArquivoLeitura(entrada);
        FILE * out = abreArquivoEscrita(saida);

        fscanf(inp, "%d ", &k); // Lê as k instâncias de problemas

        for (int l=0; l<k; l++){

            fscanf(inp,"%s\n",palavra);
            tamPalavra = strlen(palavra);

            criaMatriz(2,tamPalavra+1,&estados);

            preencheMatriz(0,&estados); // Preenche matriz toda com 0

            fprintf(out,"%d\n",lcs(palavra, tamPalavra, &estados));

            //imprimeMatriz(estados);

            destroiMatriz(&estados);

        }

        free(palavra);
        fechaArquivo(inp);
        fechaArquivo(out);

    }
    else{
        printf("Número incorreto de parâmetros. Fazer seguir exemplo:\n\n\t./tp2 input.txt output.txt\n\n"); exit(0);
    }
    return 0;
}
Exemplo n.º 2
0
int main (int argc, char *argv[])
{
	while ((scanf("%i %i", &linha, &coluna) != EOF)
            && (linha > 0 && coluna > 0))
	{
		int i, j;

		/* Criacao da matriz */
		criaMatriz();

		/* Le os valores de cada pixel */
		for(i = 0; i < linha; i++)
            for(j = 0; j < coluna; j++) scanf("%i", &vetor[i][j]);

		contaRegioes(); /* coracao do programa */
		imprime(); /* imprime os pixel e a quantidade de regioes */
		liberaEspacoMemoria(); /* libera o espaco alocado pelas listas/vetor */

		numReg = 0; instancia++; /* Atualiza valores para a proxima instancia, se tiver */
	}
	return 0;
}
Exemplo n.º 3
0
int main (int argc, char **argv) {
	int **tabuleiro, **grauJogadaBranca, **grauJogadaPreta;
	int m, n, vitP, vitB,tam = 14;
	int corPreta, corBranca, modoVerboso, eJogada, troca = 0;
	forcaJogada jog;
	posicao proximaJogada;
	
	proximaJogada = malloc (sizeof (pos) );
	jog = malloc (sizeof (jogada) );
	
	grauJogadaBranca = criaMatriz (tam, tam);
	grauJogadaPreta = criaMatriz (tam, tam);
	tabuleiro = criaMatriz(tam, tam);

	if (argc > 3)
		return 0;	
	if (argc == 3) 
		if (argv[2][0] == 'd')
			modoVerboso = 1;
		else
			modoVerboso = 0;
	if (argc == 2) 
		modoVerboso = 0;
	if (argv[1][0] == 'b') {
		corBranca = 1;
		corPreta = 0;
	}	
	else if (argv[1][0] == 'p') {
		corBranca = 0;
		corPreta = 1;
	}
	else {
		return 0;
	}
	
	zeraMatriz(tabuleiro, tam, tam, -2);
	zeraMatriz(grauJogadaBranca, tam, tam, -1);
	zeraMatriz(grauJogadaPreta, tam, tam, -1);
	
	vitB = checaVitoria(tabuleiro, corBranca, tam);
	vitP = checaVitoria(tabuleiro, corPreta, tam);

	while (vitP == 0 && vitB == 0) {
		scanf("%d %d", &m,&n);
		
		if (m == tam/2 && n == tam/2 && troca == 0) {
			corBranca = corPreta;
			corPreta = 1;
			troca = 1;
		}
		
		else {
			troca = 1;
		}
		
		while (casaLivre (tabuleiro, tam, m, n) == 0) {
			scanf("%d %d", &m,&n);
		}
		
		tabuleiro[m][n] = corBranca;
			
		/* Calcular jogada da maquina */
		zeraMatriz(grauJogadaPreta, tam, tam, -1);
		grauJogadaPreta = jogadaLivre (tabuleiro, tam, grauJogadaPreta, corPreta);
		eJogada = existeJogada (grauJogadaPreta, tam);
		
		if (eJogada == 1) {
			grauJogadaPreta = grauJogada(tabuleiro, tam, grauJogadaPreta, corPreta);
			jog = jogadaMaisForte (grauJogadaPreta, tam);
			if (jog -> qnt > 1) {
				proximaJogada = sorteiaJogada (tabuleiro, grauJogadaPreta, tam, jog -> forca, jog -> qnt);
			}
			else { /* Só uma casa com aquela força de ocorrencia */
				proximaJogada = buscaForcaMatriz(tabuleiro, tam, grauJogadaPreta, jog -> forca); /* Fazer a busca Matriz */
			}
			printf("%d %d\n", proximaJogada -> lin, proximaJogada -> col);
			tabuleiro[proximaJogada -> lin][proximaJogada -> col] = corPreta;
			if (modoVerboso == 1)
			imprimeMatriz(tabuleiro, tam, tam);
		}

	
		vitP = checaVitoria(tabuleiro, corPreta, tam);
		printf("\n vitP = %d",vitP);
		fflush(stdout);
		
		vitB = checaVitoria(tabuleiro, corBranca, tam);
		printf("\n vitB = %d",vitB);
		fflush(stdout);
	}
	
	if (vitB == 1) {
		printf("b ganhou\n");
		return 0;
	}
	if (vitP == 1){
		printf("p ganhou\n");
		return 0;
	}
	
	return 0;

}