Профил
Loading...
+ Нов въпрос
svetlioi avatar svetlioi 41 Точки

17. Closest Two Points, Classes, Constructors, Access Modifiers, Methods

Здравейте, може ли да ми помогнете, тъй като имам някакъв бъг в кода и не мога да го открия.

Условие:

1.Closest Two Points

Write a program to read n points and find the closest two of them.

Input

The input holds the number of points n and n lines, each holding a point {X and Y coordinate}.

Output

  • The output holds the shortest distance and the closest two points.
  • If several pairs of points are equally close, print the first of them (from top to bottom).

Examples

Input

Output

Visualization

Comments

4

3 4

6 8

2 5

-1 3

1.414

(3, 4)

(2, 5)

17. Closest Two Points, Classes, Constructors, Access Modifiers, Methods

The closest two points are {3, 4} and {2, 5} at distance 1.4142135623731 ≈ 1.414.

3

12 -30

6 18

6 18

0.000

(6, 18)

(6, 18)

17. Closest Two Points, Classes, Constructors, Access Modifiers, Methods

Two of the points have the same coordinates {6, 18}, so the distance between them is 0.

3

1 1

2 2

3 3

1.414

(1, 1)

(2, 2)

17. Closest Two Points, Classes, Constructors, Access Modifiers, Methods

The pairs of points {{1, 1}, {2, 2}} and {{2,2}, {3,3}} stay at the same distance, but the first pair is {{1, 1}, {2, 2}}. The distance between them is 1.4142135623731 ≈ 1.414.

Код: https://pastebin.com/UYynckRD

willystyle avatar willystyle 1442 Точки

Това какво се очаква да направи:

return ((int)(Math.Sqrt(dist)*10000))/10000.0;

Върни си просто Math.Sqrt(dist).

Втория бъг е, че в първия цикъл трябва да въртиш до предпоследния елемент, не до последния.

Третата грешка, тя е особено важна, е че обектите са референтен тип данни, и така както вкарваш точките, накрая всички точки са референции към последната вкарана. Затова в цикъла си инициализирай всеки път нова когато вкарваш.

https://pastebin.com/6UcGmtBW

0
30/06/2019 14:42:43