Jump to content
Fórum Script Brasil
  • 0

Sou iniciante, me tirem uma dúvida.


matheussouza12
 Share

Question

Gente, eu tenho um exercicio pra resolver. Basicamente é o seguinte. Eu tenho que pegar uma lista, e retirar x números, que faça minha lista ter o maior número possivel. O a quantidade de números que vou precisar retirar vai ser dada. Exemplo

2

269810

Eu preciso que meu programa retire o número 2 e o 6. Eu só consegui fazer meu programa retirar os menores sempre, mas não é assim que se resolve. Alguém pode me dar uma ideia de como resolver?

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Seguindo seu exemplo a solução mais facil é fatiar

lista = [2, 6, 9, 8, 1, 0]

x = 2

nova_lista = lista[x:]
nova_lista_2 = lista[:x]

 

Edited by ArteEN
Completar o exemplo
Link to comment
Share on other sites

  • 0

Pra ficar mais claro o problema.

Juvenal e seu parceiro Leôncio estavam voltando para casa quando receberam uma ligação de Tobias, gerente do banco a qual são clientes. Tobias falou que houve um grande problema no saldo de usuários do banco: foram, acidentalmente, concatenados (em  posições aleatórias) inteiros em cada saldo e não existe um backup para se descobrir o valor antigo, mas o banco sabe quantos caracteres foram concatenados em cada saldo. 
Para resolver a situação o banco resolveu retirar caracteres do saldo. Juvenal, que não ia aceitar perder dinheiro, obrigou o banco a deixar o saldo o maior possível quando se retirassem os caracteres. 
Por exemplo, se eu sei que o saldo é 1435 e sabendo que existem 2 caracteres extras nesse saldo, posso concluir que devo apagar os números 1 e 3 para gerar o maior saldo possível: 45.
Leôncio conhece (superficialmente) os conceitos de Estruturas de Dados, logo precisa de sua ajuda para descobrir as maiores sequências possíveis que podem ser formadas ao se retirar caracteres.

Formato de Entrada

Vão existir vários casos de teste. (use endOfFile)
Cada caso é formado por A e B  1 <= B < A <= 10^5 seguido na linha abaixo por A caracteres (o primeiro digito nunca vai ser zero) que representam inteiros, B é a quantidade de dígitos que você deve apagar.

Formato de Saída

Imprima o maior saldo possível que pode existir depois da retirada de caracteres.
Exemplos

Entrada:

5 3
15342
3 1
123
2 1
11

Saída:

54
23
1

Link to comment
Share on other sites

  • 0

Olá!

 

 

Sou iniciante em Python, mas acho que posso dar uma força . . .

 

Bom, você tem 2 dígitos importantes: [ 4 , 2 ]

 

- o primeiro diz a quantidade de dígitos existentes na sequencia

 

- o segundo a quantidade de dígitos a serem removidos da sequencia

 

Sendo o saldo da conta: 1435

 

Onde neste caso você deve deixar na sequencia os 2 maiores dígitos da sequencia ( 5 e 4 ) para que sejam utilizados para o maior saldo final possivel?

 

Mas isso deve obedecer alguma regra especifica?

 

Ex:

 

Na ordem original: 1435, o valor final do saldo seria 45 obedecendo o posicionamento original dos caracteres, ou deveria ser 54 obedecendo ao maior valor possível de se conseguir combinando todos os caracteres restantes?

 

- Caso seja a primeira opção:

 

Que é basicamente uma variação da segunda opção:

 

O que eu fiz aqui foi, criar um laço while que será executado enquanto uma variável de controle ( contagem ) for menor que a quantidade de dígitos a serem retirados da sequencia, neste caso 2.

 

Dentro do laço while, utilizei o método .remove(), para retirar da sequencia ( lista ) original o menor dígito encontrado na lista ( sequencia ) original, sendo que o processo se repetirá ate que a condição do laço seja atingida, 1 item a cada iteração, mas não alterando o posicionamento original dos elementos.

 

Obs.: Não esquecendo de adicionar 1 a variável de controle ( contagem ) antes de terminar o laço.

 

- Caso seja a segunda opção:

 

O que eu fiz aqui foi, criar um laço while que será executado enquanto uma variável de controle ( contagem ) for menor que a quantidade de dígitos a permanecerem na sequencia, neste caso 2.

 

Dentro do laço while, utilizei o método .append() para adicionar à uma nova lista ( sequencia ), o maior dígito encontrado na lista ( sequencia ) original, sendo que o processo se repetirá ate que a condição do laço seja atingida, 1 item a cada iteração.

 

Obs.: não esquecendo de após descobrir o maior digito da sequencia ( lista ) originaleliminá-lo da mesma, caso contrario a nova sequencia terá todos os seus elementos ( dígitos ) repetidos.

 

Obs.: Não esquecendo de adicionar 1 a variável de controle ( contagem ) antes de terminar o laço.

 

 

Dependendo da opção escolhida, o valor de retorno de:

 

[ 4 , 2 ]

1435

 

vai ser 45 para a primeira opção

 

vai ser 54 para a segunda opção

 

 

Bom por hora é só . . . não sei se é isso que procura mas está ai . . . sem contar que sou pessimo em Matematica, e combinando isso com a hora em que estou acordado e o fato de que sou iniciante em programação, é quase certo que não é a solução que voce procura!

 

 

Ubuntu 14.04 - Python 2.7.6 - Python 3.4.3

 

Espero Ter Ajudado ! ! !

Edited by Felipe222
Link to comment
Share on other sites

  • 0

Felipe, obrigado pela sua disposição em ajudar. Seria a primeira opção, eu também fiz assim. Mas o problema, não é retirar os menores números, saca? Exemplo

6 2

269800

A saída deverá ser : 9800

Meu programa não deve retirar os menores números, ele deve retirar os números, cujo objetivo é deixar o maior número possivel, ficou confuso essa explicação, mas acho que deu pra entender.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...