Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 6
1

Перевести код поиска пары ближайших точек c C++ на С#

18.04.2016, 12:30. Показов 1924. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем добрый день!

Натолкнулся на нужный мне алгоритм http://e-maxx.ru/algo/nearest_points с реализацией на с++, а мне нужно на с#

Сижу пытаюсь переделать, но может быть кто-то может это сделать легко и непринужденно?

Не получается на гуглить >> (int m = (l + r) >> 1) и разобраться бы в сортировках sort (a+l, a+r+1, &cmp_х); inline bool cmp_x (const pt & a, const pt & b)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
sort (a, a+n, &cmp_x);
mindist = 1E20;
rec (0, n-1);
 
struct pt {
    int x, y, id;
};
 
inline bool cmp_x (const pt & a, const pt & b) {
    return a.x < b.x || a.x == b.x && a.y < b.y;
}
 
inline bool cmp_y (const pt & a, const pt & b) {
    return a.y < b.y;
}
 
pt a[MAXN];
 
double mindist;
int ansa, ansb;
 
inline void upd_ans (const pt & a, const pt & b) {
    double dist = sqrt ((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y) + .0);
    if (dist < mindist)
        mindist = dist,  ansa = a.id,  ansb = b.id;
}
 
void rec (int l, int r) {
    if (r - l <= 3) {
        for (int i=l; i<=r; ++i)
            for (int j=i+1; j<=r; ++j)
                upd_ans (a[i], a[j]);
        sort (a+l, a+r+1, &cmp_y);
        return;
    }
 
    int m = (l + r) >> 1;
    int midx = a[m].x;
    rec (l, m),  rec (m+1, r);
    static pt t[MAXN];
    merge (a+l, a+m+1, a+m+1, a+r+1, t, &cmp_y);
    copy (t, t+r-l+1, a+l);
 
    int tsz = 0;
    for (int i=l; i<=r; ++i)
        if (abs (a[i].x - midx) < mindist) {
            for (int j=tsz-1; j>=0 && a[i].y - t[j].y < mindist; --j)
                upd_ans (a[i], t[j]);
            t[tsz++] = a[i];
        }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2016, 12:30
Ответы с готовыми решениями:

Алгоритм поиска пары ближайших точек
В алгоритме есть шаг что то типа: рекурсивно найти наименьшее расстояние между точек в каждой из...

Поиск пары ближайших точек
Подскажите пожалйста, алгоритмы решения задачи о паре ближайших точек

Реализовать алгоритмы для задачи о поиске пары ближайших точек
Реализовать алгоритмы для задачи о поиске пары ближайших точек: 1) прямой перебор (метод грубой...

Реализация алгоритма поиска ближайших точек
Здравствуйте, возникла проблема с измерением времени работы алгоритмов. Написал программу, которая...

1
Заблокирован
18.04.2016, 12:44 2
Цитата Сообщение от Rejendo Посмотреть сообщение
Не получается на гуглить >>
C# right shift
Цитата Сообщение от Rejendo Посмотреть сообщение
и разобраться бы в сортировках sort (a+l, a+r+1, &cmp_х); inline bool cmp_x (const pt & a, const pt & b)
C# sort comparator
1
18.04.2016, 12:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2016, 12:44
Помогаю со студенческими работами здесь

Алгоритм поиска ближайших друг к другу точек
Народ, помогите реализовать алгоритм поиска соседней точки. Есть коллекция точек типа X(x1,x2.......

Алгоритм поиска 2-х ближайших точек из массива элементов Point [] points к заданной точке Point p.
Кто может, напишите хотя бы один алгоритм, пожалуйста. Алгоритм поиска 2-х ближайших точек из...

Программа для поиска пары точек с минимальным расстоянием из заданных пяти
Здравствуйте, пытаюсь написать программу с данным условием. Все важные ошибки которые были...

Поиск ближайших точек
На плоскости случайно расставляются точки. Далее задаётся ещё одна точка, для которой нужно найти n...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru