Je suis confronté à un problème de programmation
Étant donné deux nombres entiers n et k, renvoyer toutes les combinaisons possibles de k nombres parmi 1 ... n.
et avec l'entrée n = 5, k = 4, la sortie devrait être [[1,2,3,4], [1,2,3,5], [1,2,4,5], [1,3,4,5], [2,3,4,5]], ce qui suit est ma solution golang
func combine(n int, k int) [][]int {
result := [][]int{}
comb := []int{}
subcom(0, k, n, &comb, &result)
return result
}
func subcom(s, k, n int, comb *[]int, result *[][]int) {
if k > 0 {
for i := s + 1; i <= n-k+1; i++ {
c := append(*comb, i)
subcom(i, k-1, n, &c, result)
}
} else {
*result = append(*result, *comb)
}
}
Je pense que ma solution est correcte, mais elle renvoie [[1 2 3 5] [1 2 3 5] [1 2 4 5] [1 3 4 5] [2 3 4 5]]].
Après débogage, j'ai constaté que [1 2 3 4] avait été ajouté à la tranche de résultat au début, mais qu'il avait ensuite été remplacé par [1 2 3 5], ce qui a entraîné la répétition de deux [1 2 3 5]. Mais je n'arrive pas à comprendre ce qui ne va pas ici.