Probablemente no sea el mejor enfoque, pero debería funcionar.
Determinar el número de combinaciones de tres números que suma a 8:
1,1,6
1,2,5
1,3,4
2,2,4
2,3,3
Para encontrar el anterior Empecé con:
6,1,1 then subtracted 1 from six and added it to the next column...
5,2,1 then subtracted 1 from second column and added to next column...
5,1,2 then started again at first column...
4,2,2 carry again from second to third
4,1,3 again from first...
3,2,3 second -> third
3,1,4
a sabiendas de que menos de la mitad es de 2 todas las combinaciones deben haber sido encontrado ... pero dado que la lista no es larga, podríamos ir al final.
Ahora ordena cada lista de 3 de mayor a menor (o viceversa) Ahora ordena cada lista de 3 una con relación a la otra. Copie cada lista única en una lista de listas únicas. Ahora tenemos todas las combinaciones que se suman a 8 (creo que cinco listas).
Consideremos ahora una lista en el anterior conjunto
6,1,1 todas las combinaciones posibles se encuentran por:
8 Pick 6, (ya que recogimos de seis sólo hay 2 para realizar los pronósticos de) 2 pick 1, 1 pick 1 que funciona hasta 28 * 2 * 1 = 56, vale la pena saber cuántas posibilidades hay para que pueda probar.
elegir n r (r elementos de recoger opciones n total)
n C r = n!/[(n-r)! r!]
Así que ya tienen el número total de iteraciones para cada componente de la lista para el primero es 28 ...
Bueno recoger los artículos en 6 8 es lo mismo que crear una lista de 8 menos 2 elementos, pero ¿qué dos elementos?
Bien si eliminamos 1,2 que nos deja con 3,4,5,6,7,8. Consideremos todos los grupos de 2 ... Comenzando con 1,2, el siguiente sería 1,3 ... entonces lo siguiente se lee columna por columna.
12
13 23
14 24 34
15 25 35 45
16 26 36 46 56
17 27 37 47 57 67
18 28 38 48 58 68 78
Resumiendo cada una de las columnas anteriores nos da 28. (lo que esto sólo cubre el primer dígito en la lista (6,1,1) repetir el procedimiento para el segundo dígito (un uno), que es "2 Elija 1 "Por lo tanto, de la izquierda más de dos dígitos de la lista anterior elegimos uno de dos y luego para el último elegimos el restante.
Sé que este no es un algoritmo detallado pero espero que pueda para comenzar
¿debería ser r3 {7, 3}? –
En el ejemplo que das, se usan todos los números. ¿Es esto un accidente o siempre quieres que este sea el caso? – aaronasterling
@Vincent @ Aaron Yo he supuesto que sí para ambos en mi respuesta. – marcog