powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как свернуть двумерный массив ?
4 сообщений из 4, страница 1 из 1
Как свернуть двумерный массив ?
    #36257230
Решальщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте,
задача в общем виде выглядит так:

1. есть двумерный массив int arr[x][y]
2. в каждой ячейки массива может находится число 0...N
3. необходимо заменить элементы в массиве на -1 в случае если в строке или столбце они повторяются более 3-х раз

Подумав над задачей - я нашел следующее решение

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
// бежим по справочнику элементов
for (int iElement =  0 ; iElement < N; iElement++)
{
  // тут просто перебираем каждую ячейку
  for (int iCol =  0 ; iCol < x; iCol++)
  {
    for (int iRow =  0 ; iRow < y; iRow++)
    {
      // вот тут начинается проверка строк и значений
      // собственно тут и запарка - слишком много переборов
      if (arr[iCol- 1 ][iRow] == arr[iCol- 2 ][iRow] == arr[iCol- 1 ][iRow] == arr[iCol][iRow] == iElement) RemoveElement(iCol, iRow);
      if (arr[iCol+ 1 ][iRow] == arr[iCol+ 2 ][iRow] == arr[iCol- 1 ][iRow] == arr[iCol][iRow] == iElement) RemoveElement(iCol, iRow);
.......
    }
  }
}

я понимаю что можно решить задачу проще - но не могу понять как ?
чувствую что нужна рекурсия - но вот опять же куда ее засунуть ... ?
...
Рейтинг: 0 / 0
Как свернуть двумерный массив ?
    #36257459
Фотография SQL_Lamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я условия задачи верно понял? Так надо?
...
Рейтинг: 0 / 0
Как свернуть двумерный массив ?
    #36257671
Решальщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если честно - то видимо я не так обьяснил
приведенный сриншот - это не правильное решение

вот с вашими данными как должно быть

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
original
2  1  2  2  2  1
1  0  2  2  1  2
2  0  2  2  1  1
2  0  2  0  0  1
1  1  1  0  2  0
0  1  1  0  2  1  

collapse (если сворачиваем >= 3) (отрицательное число - это свернутое оригинальное число)
 2  1 -2 -2 -2  1
 1 -0 -2 -2  1  2
 2 -0 -2 -2  1  1
 2 -0 -2  0  0  1
-1 -1 -1  0  2  0
 0  1  1  0  2  1  

collapse (если сворачиваем > 3) (отрицательное число - это свернутое оригинальное число)
2  1 -2  2  2  1
1  0 -2  2  1  2
2  0 -2  2  1  1
2  0 -2  0  0  1
1  1  1  0  2  0
0  1  1  0  2  1 

...
Рейтинг: 0 / 0
Как свернуть двумерный массив ?
    #36294769
vinger4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
почему у Вас циклы по строкам и столбцам вложены друг в друга? нельзя отдельно пробежать сначала по строкам, а затем по столбцам?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как свернуть двумерный массив ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]