Ir ao conteúdo
  • Cadastre-se

C Arrays em C URI


Ir à solução Resolvido por Ansi C,

Posts recomendados

Gente minha lógica está errada, alguém poderia ajuda ? 

O link do enunciado: https://www.urionlinejudge.com.br/judge/pt/problems/view/1318

 

Meu programa apenas está apresentando saídas erradas.

 

#include <stdio.h>

int main()

{
    int n, m,  i, k, qtd=0;
    int t[10];

    scanf("%d %d", &n, &m);


     while (n != 0 || m != 0) {

    for (i = 0 ; i < m; i++) {

            scanf("%d", &t[i]);
            if(t[i] == t[i-1]){
                qtd++;
            }

        }


        printf("%d\n", qtd);
        qtd = 0;

        scanf("%d %d", &n, &m);


     }


    return 0;
}


 

Link para o comentário
Compartilhar em outros sites

  • Solução

Entrada

Citação

A entrada contém dados de diversos casos de teste. Cada caso de teste contém duas linhas. A primeira linha contém dois inteiros N e M, que indicam, respectivamente, o número de bilhetes originais e o número de pessoas presentes na festa (1 ≤ N ≤ 10000 e 1 ≤ M ≤  20000). A segunda linha do caso de testes contém M inteiros Ti representando os números dos bilhetes contidos no pacote que o diretor lhe deu (1 ≤ Ti ≤ N). O final da entrada é indicado por N = M = 0.

 

Saída

Citação

Para cada caso de teste seu programa deverá imprimir uma linha, contendo o número de bilhetes do pacote que contém outro bilhete com o mesmo número da sequência.

 

 

Rapidamente eu diria que a maioria dos usuários usou    tabela hash    para resolver.

São duas informações, a primeira entrada é capacidade (N + 1) do vetor (tabela hash) e a segunda

quantidade de chaves (índices para o vetor).

1 hora atrás, Leanderson Pinheiro disse:

Exemplo 6 10 / 6 1 3 6 6 4 2 3 1 2

Analisando essas informações, diria que o vetor (tabela hash) tema capacidade igual a 7

A quantidade de chaves é 10, ou seja, serão 10 entradas antes de fim.

 

Sempre que houver colisões, ou seja, o subscrito da tabela retorna um valor diferente de 0 incremente o contador, que no contexto do problema representa o acumulo de bilhetes falsos, ou não original.

 

Caso não haja colisão, ou seja o subscrito retorne 0, então esse é um bilhete original e precisa ser atribuído valor 1 no subscrito. Segue a ilustração

     6 10
     |                          6 1 3 6 6 4 2 3 1 2
     |                          | | | |
     |                          | | | |
hash[7] = {0};                  | | | |
// todos os subscritos são 0.   | | | |
                           hash[6] tem valor? 0 então atribuir 1
                             hash[1] tem valor? 0 então atribuir 1
                               hash[3] tem valor? 0 então atribuir 1
                                  hash[6] tem valor? 1 então colisão incrementar contador
                                  ...

A resposta final é 4 colisões: (6)x2, (3)x1, (2)x1

:) ]

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!