Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2010, 14:25   #1
Nimbu
 
Регистрация: 13.05.2010
Сообщений: 7
По умолчанию Метод ближайшего соседа

Нужно реальзовать метод ближайшего соседа на с++!
Nimbu вне форума Ответить с цитированием
Старый 14.06.2010, 14:27   #2
Nimbu
 
Регистрация: 13.05.2010
Сообщений: 7
По умолчанию

#include "kdtree.h"
#include <iostream>

namespace KDTREE{

std:stream& operator << (std:stream& o, const Points & ps)
{
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:stream& operator << (std:stream& o, const Ind & ind)
{
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:epthFirstVisit(Node * n) const
{
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
Nimbu вне форума Ответить с цитированием
Старый 14.06.2010, 14:29   #3
Nimbu
 
Регистрация: 13.05.2010
Сообщений: 7
По умолчанию

помоги те я не врубаюсь, как это можно через C++ builder скомпилировать??????????
Ну помогите пожалуйста очень срочно нужно!!!!!
Nimbu вне форума Ответить с цитированием
Старый 14.06.2010, 14:33   #4
sania5768
Новичок
Джуниор
 
Регистрация: 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 не может быть достигнут с монетами заданного типа, то выводится сообщение «Нет решения»'.
sania5768 вне форума Ответить с цитированием
Старый 14.06.2010, 16:00   #5
Nimbu
 
Регистрация: 13.05.2010
Сообщений: 7
По умолчанию

ну помогите мне
Nimbu вне форума Ответить с цитированием
Старый 14.06.2010, 16:24   #6
Фирштейн
Новичок
Джуниор
 
Регистрация: 14.06.2010
Сообщений: 1
По умолчанию

помогите в Qbasic написать песенку и нарисовать анимированную картинку срочно пожалуйста завтра зачёт
Фирштейн вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск ближайшего минимального значения на 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