1104 - Troca de Cartas
Vamos rever teoria de conjuntos!
Last updated
Vamos rever teoria de conjuntos!
Last updated
O objetivo deste problema é descobrir qual é a maior quantidade de pares de cartas que as meninas podem trocar entre si, considerando que nenhuma das duas gostaria de receber uma carta repetida. Uma boa maneira de conseguir este resultado é executando os seguintes passos:
Tirar todas as cartas repetidas entre si do baralho das duas meninas
Tirar todas as cartas que aparecem tanto num baralho quanto no outro
Entre as cartas que sobrarem, selecionar a quantidade de cartas do menor baralho
Se lidarmos com conjuntos, onde os conjuntos A
e B
representam as cartas de Alice e Beatriz, respectivamente, o primeiro passo já será resolvido automaticamente, já que conjuntos não aceitam elementos repetidos. Desta maneira, agora podemos fazer a diferença entre os dois conjuntos e ficar com a menor entre elas para nossa resposta.
Podemos calcular a diferença diretamente ou usar uma das duas equações abaixo para calcular a cardinalidade da diferença para gente (que no final das contas, é o que interessa).
Em todas as implementações exibidas abaixo, usamos a segunda equação. O motivo de não calcular A - B
e B - A
direto é apenas a fim de economizar memória.
A linguagem C não nos providencia uma implementação de conjuntos interessante. Neste caso, tivemos que usar vetores, mas continuo usando a segunda equação normalmente, o raciocínio é o mesmo.