2016-06-05 2 views
0

Я просто решил проблему Pythagorean Triples, версия каждой из сторон треугольника и гипотенузы все меньше 500 ... проблема говорит о том, что мы должны найти все значения side1 и side2, которые делают квадратный треугольник ,Является ли это грубой силой?

мои вопросы:

  1. это перебор?
  2. делает грубую силу означает, что результаты могут быть найдены в предыдущей итерации, а затем каждое решение может быть повторением?

я оставить свой код (обратите внимание: этот код находит несколько повторных soultions, так что я не знаю, если это плохой код или фактическое определение этого понятия)

public class TriplePitagoras { 
    public static void main (String args[]){ 

     for (int side1 = 1 ; side1 <= 500 ; side1++){ 
      for (int side2 = side1 ; side2 <= 500 ; side2++) 
       for (int hypotenuse = side2 ; hypotenuse <= 500 ; hypotenuse++){ 
        if ((int) Math.pow(hypotenuse, 2) == (int) (Math.pow(side1,2) + Math.pow(side2,2))) 
         System.out.printf("hypotenuse = %d, side1 = %d, side2 = %d \n", hypotenuse, side1, side2); 
       } 
     } 
     System.exit(0); 
    } 
} 
+0

Также см. Http://stackoverflow.com/a/26876971/6178459 – Arjan

+0

Спасибо @Arjan – fzappaandthem

+0

Что значит дублировать? Каждая генерируемая тройка уникальна. Хотя существуют повторяющиеся гипотенузы, каждая из дублированных гипотенуз сочетается с разными сторонами 1 и side2. Для переключаемых сторон нет дубликатов. Например, side1 = 3, side2 = 4, hypotenuse = 5 представляется только один раз и не снова как side1 = 4, side2 = 3, hypotenuse = 5. Это гарантируется вашим кодом, потому что для каждой стороны1 он проверяет, он всегда проверяет значения side2, которые равны или выше, чем side1, а пифагорейные тройки с равными сторонами 1 и side2 просто не существуют. – Arjan

ответ

0

Да, a brute force approach, хотя наихудший случай был бы, если вы начнете все циклы с 1.

Brute, заставляя ваш путь до решения просто означает, что вы начинаете генерировать все возможные комбинации, а затем исключать те, которые не соответствуют вашим конкретным критериям, в этом случае все, для которых a^2 + b^2! = c^2.

Вы не смотрите на свойства чисел, чтобы попытаться выяснить какую-либо формулу для получения одного из других или попытаться уменьшить количество тестов, которые вы должны выполнить, и т. Д., Вы используете muscles instead of brains, чтобы добраться до результат, поэтому он называется грубой силой.

Ваш компьютер может запускать все комбинации очень быстро, но для некоторых случаев вам нужно a more elegant approach.

+0

Спасибо @Bogdan Я также хотел знать, являются ли дублированные решения проблемой или если это нормально в грубой силе. – fzappaandthem

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