By starting at the top of the triangle below and moving to adjacent numbers on the row below, the maximum total from top to bottom is .
3 7 4 2 4 6 8 5 9 3
That is, .
Find the maximum total from top to bottom of the triangle below:
75 95 64 17 47 82 18 35 87 10 20 04 82 47 65 19 01 23 75 03 34 88 02 77 73 07 63 67 99 65 04 28 06 16 70 92 41 41 26 56 83 40 80 70 33 41 48 72 33 47 32 37 16 94 29 53 71 44 65 25 43 91 52 97 51 14 70 11 33 28 77 73 17 78 39 68 17 57 91 71 52 38 17 14 91 43 58 50 27 29 48 63 66 04 68 89 53 67 30 73 16 69 87 40 31 04 62 98 27 23 09 70 98 73 93 38 53 60 04 23
NOTE: As there are only 16384 routes, it is possible to solve this problem by trying every route. However, Problem 67, is the same challenge with a triangle containing one-hundred rows; it cannot be solved by brute force, and requires a clever method! ;o
Esse foi o primeiro desafio que tive demorei para resolver.
Fui olhar nos comentários das outras pessoas que resolveram e parece que ninguem teve dificuldades?
Eles começaram de baixo pra cima e iam comparando qual o maior número e somando... Mas isso não me parece ser correto, porque precisamos verificar todos os caminhoes possíveis para realmente confirmar qual resulta na maior soma
Agora entendi o que é recursion e backtracking
Pelo o que eu entendi tem que ir para a fileira de baixo e escolher o número da esquerda ou pra direita apenas, não o maior da fileira inteira.
Existem 14 fileiras, cada vez se pode escolher 2 números
comprova que é isso mesmo
O maios difícil vai ser como encodar o triangulo. Por sorte ao copiar e colar no meu editor o triangulo ficou reto e acho que vai facilitar pensar que:
Neste formato o índice nunca volta, ele sempre avança
Resposta = 1064 e deu errado
Agora que entendi, parece que o problema seja na base do bruteforce mesmo e não comparar para ver qual o melhor caminho de imediato. Podem ter caminhos alternativos que a soma seja maior apesar de no começo a soma ser menor
Existem caminhos
Oof, tentei pensar num loop dentro de loop mas parei aí... não sei como fazer ainda
Pensar em indices até o final: 0,0 1,0 2,0 3,0 4,0 5,0 6,0 7,0 8,0 9,0 10,0 11,0 12,0 13,0 14,0
O primeiro indice sempre vai ser 0..14
O outro indice que vai variar, e vão ter 16384 variações... Como chegar nelas?
Começa com 75, depois podemos escolher 95 ou 64, escolhemos 95
Depois podemos escolher 17 ou 47, escolhemos 47
Depois podemos escolher 18 ou 87, escolhemos 87
São sempre escolhar binárias... 13 vezes. Seriam 13 loops??
Talvez matriz 3D?
E se pensar já na soma, e não nos números?
segunda linha =
Terceira linha = 4 elementos =
Quarta linha = 8 elementos .... assim na ultima linha vamos ter 16384 elementos
vamos tentar permutações todas as 1628 permutações vão ser então eu preciso gerar as 1628 permutações do segundo índice limitacoes seriam que o indice inicia no 0 e o proximo se mantem zero ou sobe. Nunca volta
Resposta correta mas fiquei bolado.