2016-10-27 5 views
1

** Это мой код, смотрите способ найти сумму в массиве **Улучшения моего жадного алгоритма

 public class Piecedemonei { 
     public static void recherche(int[] tab) { 
       int num; 
       int quo; 

       for (int i = 0; i <= tab.length - 1; i++) { 


int somme = 18; 
        System.out.println("Solution " + i); 

        for (int j = i; j < tab.length; j++){ 


         if (tab[j] <= somme) { 

          num = somme/tab[j]; 
          System.out.print(num+"*" + " " + tab[j]); 
          System.out.println(" "); 

          somme -= num * tab[j]; 
     j=0; 
         } 



       } 
      } 
      } 




      public static void main(String[] args) { 
       int aba[] = { 7, 6, 4, 5 }; 
       recherche(aba); 
       System.out.println(); 

      } 

     } 

Выход

Solution 0 
2 7 + 1 4 
Solution 1 
Solution 2 
Solution 3 

** Ищет способ для улучшения моего кода, чтобы результат выглядел следующим образом: **

Solution 0 
2*7 + 1*4 
Solution 1 
3*6 
Solution 2 
4*4 + 1*4 
Solution 3 

** Почему я не могу сбросить свою петлю так, что он делает то же самое снова и снова? **

+0

Почему я не могу сбрасывать свой цикл так, чтобы он делал то же самое снова и снова: вам нужно объявить 'somme' внутри первого цикла for. В противном случае следующие циклы никогда не попадают в «if (tab [j] <= somme)» – alexbt

+0

Вы код ищет somme = 18, но вы уменьшаете во внутреннем цикле. Вам нужно переназначить somme = 18 в начале каждого цикла. – alexbt

+0

добавил ответ с форматированием, который легче увидеть. – alexbt

ответ

0

Изменение

int somme = 18; 
for (int i = 0; i <= tab.length - 1; i++) { 
    System.out.println("Solution " + i); 

    for (int j = 0; j < tab.length; j++){ 
    ... 

в

for (int i = 0; i <= tab.length - 1; i++) { 
    int somme = 18; 
    System.out.println("Solution " + i); 

    for (int j = i; j < tab.length; j++) { 
    ... 

Обратите внимание на int j = i во внутреннем цикле.

+0

Большое вам спасибо! Боже мой, как ты понял, может быть, ты понимаешь это? –

+0

Практика, практика, практика :) – alexbt

Смежные вопросы