![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 13.05.2010
Сообщений: 7
|
![]()
Нужно реальзовать метод ближайшего соседа на с++!
|
![]() |
![]() |
![]() |
#2 |
Регистрация: 13.05.2010
Сообщений: 7
|
![]()
#include "kdtree.h"
#include <iostream> namespace KDTREE{ std: ![]() ![]() { unsigned int numPoints = ps.size1(); unsigned int dim = ps.size2(); for (unsigned int i = 0; i < numPoints; i++){ o << "index=" << i << " "; for (unsigned int j = 0; j < dim; j++) o << ps(i, j) << " "; o << "\n"; } return o; }; // output the ind std: ![]() ![]() { o << "\t\t\t ind=["; Ind::const_iterator it = ind.begin(); Ind::const_iterator itend= ind.end(); for ( ; it != itend; ++it) { o << *it << ","; } o << "]\n"; return o; } // // build the kd-tree // start with all the indexes // void KDtree::build(void) { Ind ind; for (size_t i = 0; i<numPoints(); i++) ind.push_back(i); _root = _build(ind); } // recursively build the kd-tree // Node * KDtree::_build(Ind ind, unsigned int depth) { #ifdef DEBUG_KDTREE std::cout << "depth = " << depth << " ind size = " << ind.size() << "\n"; #endif unsigned int i, axis, medianPos; axis = depth % dim(); // select the axis #ifdef DEBUG_KDTREE std::cout << "Selected axis = " << axis << "\n"; for (i = 0; i < ind.size(); i++) // consider all the assigned points std::cout<< "\tindex=" << ind[i] << " " << _ps(ind[i], axis) << "\n"; #endif Node * node = new Node(_ps(ind[0], axis), ind[0]); // this local node if (ind.size() == 1) // no more points to partition { #ifdef DEBUG_KDTREE std::cout << "\tLeaf\n"; #endif return node; } // find the median medianPos = ind.size() / 2; _find_median(ind, axis, 0, ind.size()-1, medianPos); // fnd the median and permute ind node->_idx = ind[medianPos]; // store this permutation idx node->_median = _ps(ind[medianPos], axis); // store median value #ifdef DEBUG_KDTREE std::cout << "Median = " << medianPos << " value " << _ps(ind[medianPos], axis) << "\n"; #endif // partition the remaining points for depth+1 // Ind indLeft, indRight; // left, right indices for (i = 0 ; i < medianPos; i++) indLeft.push_back(ind[i]); for (i = medianPos+1 ; i < ind.size(); i++) indRight.push_back(ind[i]); // recurse // if (indLeft.size()>0) node->_left = _build(indLeft, depth+1); // recursively build left if (indRight.size()>0) node->_right = _build(indRight, depth+1); // recursively buuld right return node; } // visit the tree void KDtree: ![]() { std::cout << "index=" << n->_idx << " "; for (unsigned int j=0; j < dim(); j++) { std::cout << _ps(n->_idx, j) << " "; } std::cout << "\n"; if (n->_left != NULL) depthFirstVisit(n->_left); if (n->_right != NULL) depthFirstVisit(n->_right); } // return nearest NNreturn KDtree::_returnNearest(const Node * n, const Point& p, unsigned int depth) const { unsigned axis; double d, d2, d3; NNreturn ret; const Node *bestGuess; const Node *bestGuess2; const Node *best |
![]() |
![]() |
![]() |
#3 |
Регистрация: 13.05.2010
Сообщений: 7
|
![]()
помоги те я не врубаюсь, как это можно через C++ builder скомпилировать??????????
Ну помогите пожалуйста очень срочно нужно!!!!! |
![]() |
![]() |
![]() |
#4 |
Новичок
Джуниор
Регистрация: 14.06.2010
Сообщений: 2
|
![]()
8. «Свинья-копилка». Для того, чтобы начать свой бизнес, юный коммерсант решил накопить немного денег. С этой целью он отыскал свинью-копилку и начал собирать деньги. Известно, что определить накопленную сумму в копилке можно, только разбив копилку. Однако, юному коммерсанту не хотелось де¬лать это раньше времени, т.е. до тех пор, пока не накопилась требуемая сумма. Избежать этого ему помог его напарник, который посоветовал, как можно оценить мини¬мальное количество денег внутри копилки, зная ее вес без монет, вес с монетами и вес монет каждого типа. Требуется написать программу, которая определяла бы мини¬мальную сумму денег, которая может находиться в копилке, по известным исходным данным.
Технические требования: Входной файл: INPUT.TXT. Результат выводится на экран. Формат входных данных: Входной файл INPUT.TXT состоит из последовательноеi и строк. В первой строке содержатся два целых числа: Е - вес пустой копилки (1<Е<10000); F - вес копилки, заполненной монетами (1<E<F< 10000); Вторая строка содержит целое число N (1<N<500) - количество типов монет. Каждая из последующих N строк служит для описания монет заданных типов и со¬держит по два целых числа – PI и Wi (1< PJ <50000, 1< W, < 10000, 1< i <N), где Рi -достоинство монеты i -го типа, a Wi - ее вес. Формат выходных данных: На экран выводится значение минимальной суммы де¬нег, которая может находиться в копилке. Если заданный вес копилки F не может быть достигнут с монетами заданного типа, то выводится сообщение «Нет решения»'. |
![]() |
![]() |
![]() |
#5 |
Регистрация: 13.05.2010
Сообщений: 7
|
![]()
ну помогите мне
|
![]() |
![]() |
![]() |
#6 |
Новичок
Джуниор
Регистрация: 14.06.2010
Сообщений: 1
|
![]()
помогите в Qbasic написать песенку и нарисовать анимированную картинку срочно пожалуйста завтра зачёт
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
поиск ближайшего минимального значения на sql | nuevegramodelamor | Помощь студентам | 7 | 11.05.2010 20:21 |
Определение ближайшего элемента массива к числу | Foxx | Помощь студентам | 7 | 14.11.2009 16:41 |
через какую прогу можно управлять компом соседа? | |{ () T | Безопасность, Шифрование | 19 | 24.10.2009 10:09 |
Округление числа до ближайшего большего/меньшего из ряда | Foxx | Microsoft Office Excel | 4 | 24.07.2009 09:50 |