Entrada: Uma matriz I de k números inteiros positivos. Os números inteiros não serão maiores que 100 e k ≤ 100 .
Saída: Seu código deve gerar todas as matrizes possíveis O de números inteiros não negativos de comprimento k com a restrição de que 0 ≤ O i ≤ I i . Para passar de uma matriz para a próxima, você pode adicionar ou subtrair 1 a um valor na matriz. Seu código não deve gerar a mesma matriz duas vezes. Se o número de matrizes diferentes a serem produzidas for muito grande, seu código deve continuar produzindo para sempre até que seja eliminado.
Exemplos
Se eu sou uma matriz de k ones, então este é exatamente o problema de iterar sobre todos os códigos Gray de largura de bit k , exceto que o primeiro e o último elemento não precisam ser alcançáveis em uma única etapa.
Se,
I = [2,1]
então, uma ordem possível das matrizes de saída for(0,0),(0,1),(1,1),(1,0),(2,0),(2,1)
- Se,
I = [2,1,3]
então, uma ordem possível das matrizes de saída é(0,0,0),(0,0,1),(0,0,2),(0,0,3),(0,1,3),(0,1,2),(0,1,1),(0,1,0),(1,1,0),(1,1,1),(1,1,2),(1,1,3),(2,1,3),(2,1,2),(2,1,1),(2,1,0),...
.
Este é um desafio do código-golfe, a submissão com o código-fonte com o menor comprimento vence. Não deixe que as respostas curtas nos idiomas do golfe o desanimam de postar uma resposta em outros idiomas. Tente encontrar a resposta mais curta em qualquer idioma.
Este também é um desafio de complexidade restrita. Toda nova matriz deve ser impressa com tempo O (k) decorrido desde a matriz anterior impressa (ou o início do programa para a primeira matriz impressa). Isso significa que o tempo de execução por nova matriz de saída (cada um tem o comprimento k ) não deve ser maior que O (k) . Ou seja, deve levar tempo proporcional a k e não, por exemplo, k 2 ou 2 k . Observe que este não é o tempo médio por saída, mas o pior caso para cada matriz gerada.
Você pode assumir que toda a aritmética em números inteiros de 64 bits pode ser executada em tempo constante, assim como a leitura e a saída, assim como a atribuição e a pesquisa e a alteração e alteração de valores nas matrizes.
Uma conseqüência da complexidade restrita é que soluções que somente saem na saída do programa não são aceitáveis.
n
e k
é limitada? assumindo que eles vão para o infinito com largura pouco como ir
I_i+1
Pode atingir 0 de?I_i
?)