Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 11:36 19.06.24 
Клубове/ Компютри и Интернет / Програмисти Всички теми Следваща тема Пълен преглед*
Информация за клуба
Тема ~
Автор~ (Нерегистриран) 
Публикувано26.02.07 11:11  



private static int[][] solve(int boardHeigth, int boardWidth, int[][] figurePositions, int[][] fruitPositions)

{
bool[] destroyed = new bool[fruitPositions.Length];
int numOfFruits = fruitPositions.Length;

for (int i = 0; i < destroyed.Length; i++)
destroyed[ i] = false;

List<int> moving = new List<int>();

while (numOfFruits > 0)
{
int d2, k = (~0) >> 1, minD2 = (~0) >> 1;
for (int i = 0; i < fruitPositions.Length; i++)
{
d2 = (figurePositions[0][0] - fruitPositions[ i][0])
* (figurePositions[0][0] - fruitPositions[ i][0])
+ (figurePositions[0][1] - fruitPositions[ i][1])
* (figurePositions[0][1] - fruitPositions[ i][1]);

if (d2 < minD2 && destroyed[ i] == false)
{
minD2 = d2;
k = i;
}
}

while (figurePositions[0][0] != fruitPositions[k][0]
|| figurePositions[0][1] != fruitPositions[k][1])
{
if (figurePositions[0][0] < fruitPositions[k][0])
{
figurePositions[0][0]++;
moving.Add(figurePositions[0][0]);
moving.Add(figurePositions[0][1]);
}
if (figurePositions[0][0] > fruitPositions[k][0])
{
figurePositions[0][0]--;
moving.Add(figurePositions[0][0]);
moving.Add(figurePositions[0][1]);
}
if (figurePositions[0][1] < fruitPositions[k][1])
{
figurePositions[0][1]++;
moving.Add(figurePositions[0][0]);
moving.Add(figurePositions[0][1]);
}
if (figurePositions[0][1] > fruitPositions[k][1])
{
figurePositions[0][1]--;
moving.Add(figurePositions[0][0]);
moving.Add(figurePositions[0][1]);
}
}
destroyed[k] = true;
numOfFruits--;
}

int[][] moves = new int[moving.Count/2][];
for (int i = 0; i < moving.Count; i+=2)
{
moves[ i / 2] = new int[2];
moves[ i / 2][0] = moving[ i];
moves[ i / 2][1] = moving[ i+1];
}

return (moves);
}




Цялата тема
ТемаАвторПубликувано
* ~ ~   26.02.07 11:11
. * Re: ~ EбacиБaщaCи   26.02.07 13:56
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.