2015-10-18 1 views
-1

J'ai ce problème:algorithme d'imprimer toutes les solutions de l'équation

Supposons que nous ayons cette équation simple

x1 + x2 + x3 + x4 + x5 = 20 

et je veux imprimer toutes les solutions entières non négatives de cette équation et je dois utiliser des chiffres 3, 4, 5, 6

par exemple:

0 + 4 + 4 + 6 + 6 = 20 
etc. 

Je ne veux pas l'écrire dans un langage de programmation spécifique, seulement en pseudo-code

Une idée?

+0

Il y a nombre infini de solutions à cette équation. Voulez-vous dire que vous voulez imprimer toutes les solutions entières non négatives? – JJJ

+0

OUI, tous non-négatifs :) – Johny

+0

Voulez-vous éliminer les doublons? par exemple '15 + 1 + 2 + 1 + 1' et' 15 + 1 + 1 + 2 + 1' sera une valeur éliminée ou les deux conservés – Paul

Répondre

0

Dans le code java

int []numbers = {0, 3, 4, 5, 6}; 
    int res=20; 
    int sum=0; 

    for(int i:numbers) 
     for(int j:numbers) 
      for(int k:numbers) 
       for(int l:numbers) 
        for(int m:numbers) { 
         sum = i + j + k + l + m; 
         if(sum==res) { 
         String solution = i + " " + j + " " + k + " " + l +" " + m; 
         Log.i("solution", "---- " + solution);} 
        } 

Dans le code pseudo est quelque chose comme ceci:

FOR each number1 in the number_list 
    FOR each number2 in the number_list 
     FOR each number3 in the number_list 
      FOR each number4 in the number_list 
       FOR each number5 in the number_list 
        sum = number1+number2+number3+number4+number5; 
        IF sum IS EQUAL TO 20 THEN 
         Print number1, number2, number3, number4, number5 
        ENDIF 
       ENDFOR 
      ENDFOR 
     ENDFOR 
    ENDFOR 
ENDFOR 
0

Cela pourrait fonctionner: Finding all possible combinations of numbers to reach a given sum

Vous pouvez commencer à l'ensemble des nombres comme [3,4,5,6] et de ne pas supprimer l'élément une fois choisi et vérifier par la profondeur de récursivité si vous avez exactement le nombre d'éléments nécessaire.

Ceci est plus générique et permettra de résoudre des équations avec un nombre différent d'éléments sans avoir besoin d'ajouter/supprimer des boucles imbriquées.

+0

J'ai édité la question, je dois utiliser seulement les chiffres 3,4 , 5,6 – Johny

+0

Ensuite, vous ne pouvez pas utiliser 0 et toutes les solutions sont non-négatives par définition. –