none
Recursividade ePermutção RRS feed

  • Pergunta

  • Bom depois de muito pesquisar na net cheguei a esse codigo o problema e que quando digita placares do tipo 2x2 ele imprime o dobro de possibilidades repetindo combinações anteriores

     

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MAX 30

    int func (char[],int );
    void trocacaracter(char [],int , int );
    char mat[MAX];
    int main()
    {
        char vet[MAX];
        char vet2[MAX];
        char vet3[MAX];
        int n1,n2,i=0,j=0,a=0;

      printf("Digite os gols do time A: ");
      scanf("%d",&n1);
      for (i=0;i<n1;i++)
      {
          vet[i]='A';
          vet3[i]='A';
      }
      vet[i]='\0';
      j=i;
      printf("Digite os gols do time B: ");
      scanf("%d",&n2);
       for (i=0;i<n2;i++)
      {
          vet2[i]='B';
          vet3[j]='B';
          j++;
      }
      vet2[i]='\0';
      vet3[j]='\0';

      printf ("\n\n");
      printf ("COMBINACOES");
      printf ("\n\n");
      printf ("\n\n");
      a=0;
      func (vet3,a);

      printf ("\n\n");
      system ("pause");
      return 0;
    }
    int func (char vetor[],int x)
    {
        int i=0,len;
        len=strlen(vetor);
        if(x==len)
        {
            printf("%s\n",vetor);
            x=0;
        }
        else
        {
           
            for(i=x;i<len;i++)
            {
                trocacaracter(vetor,x,i);
                func(vetor,x+1);

            }
        }
       
    }
    void trocacaracter(char str[],int p1, int p2)
    {
        char temp;
       
            temp=str[p1];   
            str[p1]=str[p2];
            str[p2]=temp;
            strcpy(mat,str);
       
    }

    sábado, 25 de setembro de 2010 20:52