Cómo hacer una lista de todas las sumas posibles de combinaciones en una matriz en c++?

StackOverflow https://stackoverflow.com/questions/8859569

  •  28-10-2019
  •  | 
  •  

Pregunta

Tengo mi tarea y no tengo idea de cómo empezar con el código para este tipo de Problema.

Vamos a decir que tengo una matriz de enteros con constan de n elementos,

[A][B][C][D][E] (Tenemos 5 elementos, por ejemplo)

Quiero hacer una lista de toda la suma de la posibilidad de tales que quiero imprimir la suma de todos los combinación (ABCDE, ABCD, ABCE, ACDE, BCDE, ABC, ABD, ABE, ACE, ADE, BDE, CDE, AB, AC, AD, AE, BC, BD, BE, CD, CE, DE, a, B, C, D y E)

Otro ejemplo sería el de 4 elementos en un array ([A][B][C][D])

Quiero una lista de todos suma de la combinación de (ABCD, ABC, ABD, ACD, BCD, AB, AC, AD, BC, BD, CD, a, B, C y D).

Espero que todos logran entender mi pregunta.Necesito ayuda y no sé cómo voy a hacer con él?

¿Fue útil?

Solución

Bueno, aquí hay una regla simple a seguir:

El conjunto de todas las combinaciones de "ABCDE" se compone de aquellas combinaciones que contienen (y así comienzan con) "A" y las que no contienen "A". En ambos casos, pueden ocurrir todas las combinaciones de "BCDE". Por supuesto, las combinaciones de "BCDE" pueden tratarse de la misma manera.

Otros consejos

Cuando usted dice "la lista de todas la suma de posibilidad" ¿quieres decir que te gustaría saber cuántos las combinaciones son realmente posible?

Si es así, entonces la búsqueda de combinaciones de N elementos tomados de K en un tiempo;hay páginas en este sitio abordar este problema.A continuación, basta con añadir el número de combinaciones de (5) + (4) + (3) + (2) + (1) para obtener el total de "suma de posibilidades".

O ¿quiere decir que usted tiene una matriz de valores y que, literalmente, quiere imprimir las diferentes sumas representadas por diferentes combinaciones de los elementos?En ese caso, usted necesita para enumerar, de hecho todas las combinaciones y evaluar las sumas.

Así que dado un array de { 1, 2, 3, 4, 5 } usted puede codificar como "A", "B", "C", "D", "E".Ejemplos de tuplas sería:

  • ABCDE = 1+2+3+4+5
  • ABE = 1+2+5
  • AC = 2+3+5

etc, donde el uso de la codificación de la enumeración para seleccionar los sumandos para su suma.Tenga en cuenta que decidir si se permite o no duplicados (es decir, es "DE" diferente de "ED") tendrá un efecto muy grande sobre sus resultados;en la mayoría de los casos esto probablemente no ser lo que usted desea.

Si tiene 3 elementos, puede imaginar cada elemento colocado en una determinada posición del 1 al 3 (o 0 a 2) y una matriz booleana que representa si el elemento está contenido en un determinado conjunto.

ABC remark
--- ---------------------
000 no element in the set
001 one element, C
010 one element, b
100 ...
011 two elements, b and c
...
111 all elements contained

Ahora, si calcula el número de soluciones, que es 2³ en este caso, y genera una función, que realiza una asignación de una representación binaria a un conjunto, de 011 a (b, c) por ejemplo, entonces puede programar fácilmente un Loop, que itera de 0 a Max-1 y devuelve todos los conjuntos, producidos por su función de mapeo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top