Essa pergunta tem uma configuração semelhante a Encontrar uma matriz que se encaixe em um conjunto de somas, embora seja bastante diferente em seus objetivos.
Considere uma matriz Ade comprimento n. A matriz contém apenas números inteiros positivos. Por exemplo A = (1,1,2,2). Vamos definir f(A)como o conjunto de somas de todos os subarrays contíguos não vazios de A. Nesse caso f(A) = {1,2,3,4,5,6}. As etapas a f(A) serem produzidas são as seguintes:
Os sub-arranjos de Asão (1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2). Suas respectivas somas são 1,1,2,2,2,3,4,4,5,6. O conjunto que você obtém desta lista é, portanto {1,2,3,4,5,6}.
Chamamos uma matriz de A única se não houver outra matriz Bdo mesmo comprimento, de modo que f(A) = f(B), exceto a matriz Ainvertida. Como exemplo, f((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}mas não há outra matriz de comprimento 3que produz o mesmo conjunto de somas.
Consideraremos apenas matrizes em que os elementos são um número inteiro sou s+1. Por exemplo, se s=1as matrizes conteriam apenas 1e 2.
Tarefa
A tarefa, para um dado ne, sé contar o número de matrizes exclusivas desse comprimento. Você pode assumir que sestá entre 1e 9.
Você não deve contar o inverso de uma matriz, bem como a própria matriz.
Exemplos
s = 1, a resposta é sempre n+1.
s = 2, as respostas contando de n = 1cima são:
2,3,6,10,20,32,52,86
s = 8, as respostas contando de n = 1cima são:
2,3,6,10,20,36,68,130
Ponto
Para um dado n, seu código deve gerar a resposta para todos os valores de sfrom 1a 9. Sua pontuação é o valor mais alto npara o qual isso termina em um minuto.
Teste
Vou precisar executar seu código na minha máquina ubuntu, portanto, inclua as instruções mais detalhadas possíveis sobre como compilar e executar seu código.
Entre os melhores
- n = 24 por Anders Kaseorg em Oxidação (34 segundos)
- n = 16 por Ourous em Clean (36 segundos)
- n = 14 por JRowan no Common Lisp (49 segundos)