Informática, perguntado por filipelealluis, 4 meses atrás

Gostaria de resolver esse problema JavaScript

Uma amiga de Alex deu uma coleção de filmes para ela de presente, e Alex está animada para assistir todos eles o mais rápido possível. A dos filmes é dada em um vetor durações [n], onde o n é o número do filme, e cada filme dura entre 1,01 e 3,00 horas (até duas casas decimais). Alex quer gastar no máximo 3,00 horas vendo filmes por dia, mas também assistir a coleção completa no mínimo número de dias possível. Alex nunca para assistir a um filme na metade. Isso é, se Alex escolheu um filme, Alex assistir um filme por completo no mesmo dia. Cheque o número mínimo de dias para assistir a uma coleção de filme completo. Exemplo:

n = 5

durações = [ 1,90, 1,04, 1,25, 2,5, 1,75 ]


Considerando um passo a passo de 1 em 1, Alex consegue assistir os filmes em mínimo de 3 dias:

1. Dia 1: primeiro e segundos filmes: 1,90 + 1,04 = 2,94 _< 3,00

2. Dia 2: quarto filme: 2,5 _< 3,00

3. Dia 3: terceiro e quinto filmes: 1,25 + 1,75 = 3,00_<


Descrição da Função:

Conclua uma função acharMinimoDeDias


acharMinimoDeDias tem o seguinte parâmetro:

- float durações [n] : a duração de cada filme.


Retornar:

- o número mínimo de dias para assistir a todos os filmes.


Restrições:

1 _< n _< 1000

1,01 _< durações [i] _< 3,0

Soluções para a tarefa

Respondido por kareenketleen
0

Resposta:

fun acharMinimoDeDias(arr : MutableList<Double>): Int {   var day : Int = 0   var indexWhile1 : Int = 0   while (true){       if (arr.size <= indexWhile1) {           break       }       for (indexFor in arr.indices){           if (((arr[indexFor] + arr[indexWhile1]) == 3.00) && (indexFor != indexWhile1)){               day += 1               arr[indexWhile1] = 0.0               arr[indexFor] = 0.0               break           }       }       indexWhile1 ++   }   val arr2 =  arr.filter { it != 0.0 }   if (arr2.isEmpty()){       return day   }   arr2.sorted()   var cont : Double = 0.0   var indexWhile2 : Int = 0   while (true){       cont += arr2[indexWhile2]       if (cont > 3.00){           day += 1           indexWhile2 --           cont = 0.0       }       indexWhile2 ++       if (arr2.size == indexWhile2){           if (arr2[indexWhile2 - 1] < 3.00){               day += 1           }           break       }   }   return day}

Explicação:

eh isso!

Perguntas interessantes