Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Matheus Weber

Problema em C

Recommended Posts

Boa tarde galera, estou estudando pra uma prova que vai acontecer amanhã de C, e estou tendo dificuldades de implementar esse código:

 

Especificação da Entrada
A entrada contém na primeira linha o número de casos de teste (N). Cada caso de
teste consiste em outras duas linhas.
A primeira linha de um caso de teste contém um inteiro L, determinando o
comprimento do trem (0 < L <= 50).
A segunda linha de um caso de teste contém uma permutação dos números de 1 a L,
indicando a ordem atual dos vagões. Os vagões devem ser permutados de tal forma que o
vagão 1 vem em primeiro lugar, depois 2, etc, com o vagão L vindo por último.
Especificação de Saída
Para cada caso de teste imprima a seguinte frase:
Optimal train swapping takes S swaps.
onde S é o número mínimo de permutações (S é inteiro).
Exemplo de entrada
4
9
1 4 6 3 2 9 8 5 7
3
1 3 2
4
4 3 2 1
2
2 1
Exemplo de Saída
Optimal train swapping takes 10 swaps. 
Optimal train swapping takes 2 swaps.
Optimal train swapping takes 6 swaps.
Optimal train swapping takes 1 swaps.
Link no online-judge: http://migre.me/1iH1H

 

Eu não consigo imprimir o swaps certo, embora ele ordene corretamente o vetor, fica dando erro na hora de contar os swaps...

 

#include <stdio.h>


main(){
      int i = 0;
      int testes = 0;
      int l = 0;
      int i1 = 0;
      int numero = 0;
      int trem[50];
      int tremorganizado[50];
      int i2 = 0;
      int aux = 0;
      int aux1 = 0;
      int cont = 0;
      scanf("%d", &testes);

      for(i=0;i<testes;i++){
          cont = 0;
          scanf("%d", &l);       
          for(i1=0;i1<l;i1++){
              scanf("%d", &numero); 
              trem[i1] = numero;
          }
          for(i1=0;i1<l;i1++){
              for(i2=0;i2<l;i2++){
                  if(trem[i2]>trem[i2+1]){
                       aux = trem[i2+1];
                       aux1 = trem[i2];
                       trem[i2] = aux;
                       trem[i2+1] = aux1; 
                       cont++;
                  }
                  else {

                  }
              }         
          }

              printf("Optimal train swapping takes %d swaps.", cont);

      }

scanf("%d", &numero);    


}

Compartilhar este post


Link para o post
Compartilhar em outros sites

declara a variável int perm = 1; 

 

e depois fazer tipo um fatorial.

 

           cont=l;
          while(cont>0) {
             perm*=cont;
                cont--;
          }

              printf("Optimal train swapping takes %d swaps.", perm);

      }

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.