Воскресенье, 17 Ноября 2024, 13:57

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Двумерный массив
E][pertДата: Четверг, 14 Апреля 2011, 17:29 | Сообщение # 1
C#-XNA-Unity
Сейчас нет на сайте
У меня есть двумерный массив типа int как проверить мне скопление единиц например у меня есть матрица
1011
0001
0000
0000

Как мне проверить где есть скопление единиц 3 и больше и заменить их на 0?


Помогаю по мере возможностей, учусь по мере сил. ©E}{pert
Tower defence in processing... For Web/iOS/Android.
MatouДата: Четверг, 14 Апреля 2011, 18:35 | Сообщение # 2
Исходный коТ
Сейчас нет на сайте
А в чем конкретно сложность? Это же простая задача на массивы.


E][pertДата: Четверг, 14 Апреля 2011, 18:58 | Сообщение # 3
C#-XNA-Unity
Сейчас нет на сайте
Да не работает соображение сегодня у меня sad

Помогаю по мере возможностей, учусь по мере сил. ©E}{pert
Tower defence in processing... For Web/iOS/Android.
MatouДата: Четверг, 14 Апреля 2011, 19:29 | Сообщение # 4
Исходный коТ
Сейчас нет на сайте
Незнаю может можно как-то оптимизировать алгоритм, но если совсем просто(по колхозному), то примерно так решается:

имеется матрица A размером mxn

Code

// C/C++

for(int i = 0; i < m - 1; ++i)
{
     int count = 0;
     for(int j = 0; j < n - 1; ++j)
     {
         if(A[i][j])
             count++;
         if(A[i][j+1])
             count++;
         if(A[i+1][j])
             count++;
         if(A[i+1][j+1])
             count++;
     }
     if(count >= 3)
     {
     // Тут надо это как-то запомнить
     }
}

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



E][pertДата: Четверг, 14 Апреля 2011, 20:29 | Сообщение # 5
C#-XNA-Unity
Сейчас нет на сайте
Matou, Спасибо за желание помочь, но к сожалению как ты написал это уж очень
Quote (Matou)
по колхозному
sad


Помогаю по мере возможностей, учусь по мере сил. ©E}{pert
Tower defence in processing... For Web/iOS/Android.
nilremДата: Четверг, 14 Апреля 2011, 20:59 | Сообщение # 6
Просветленный разум
Сейчас нет на сайте
Ищешь единицу, проверяешь соседей, если единицы и их больше 2 заменяешь каким-нить символом(например #), далее ищешь единицу, проверяешь соседей, если единица или # и их больше 2 заменяешь единицу на # и т.д. По окончании делаешь второй проход заменив все # на 0.

И ничего тут колхозного.


Windmill 2

WindMill 2D Game Engine
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг