Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
Вернуться
Тема: Как добавлять елемент в двумерном масиве в слот который надо, наведу пример:початок из индекса a[0][0],добавляем влево елемент a[0][-1],вправо a[0][1],вверх a[-1][0],вниз a[1][0],и так сколько угодно,просто создавать двумерный масив из 1000000^2 елементов идёт стек)помогите пожалуйста
1
  1  Неизвестный, 21 июня 2018 г. 13:00:12
      Ток я знал как зделать ету програму просто думал можна ли по другому делать или нет, но вы меня навернули в нужное русло, благодарю за помощь
  2  Неизвестный, 21 июня 2018 г. 12:42:50
      Спасибо большое)
  3  Тер-Саркисов Богдан Олегович, 20 июня 2018 г. 14:35:49
      У тебя и не получится выделить столько памяти. Ну, сам посчитай. Пусть ячейка хранит 1 байт. Тогда тебе для хранения массива 10^6*10^6 потребуется 10^12 байт = 931.3 ГБ памяти. Делай, как говорят тебе ниже: храни множество пар координат в set<pair<int, int>>. Пара координат (x, y) хранится в виде pair<int, int>.
Допустим, ты пытаешься перейти в ячейку с координатами (x, y). Сначала проверяешь, находится ли эта пара координат в set'e. Если находится, то ты ее раньше клал туда, то есть уже побывал в ячейке с этими координатами (если говорить про змейку, то змейка столкнулась со своим хвостом). Если не находится, то кладешь пару координат в set и двигаешься дальше.
  4  Неизвестный, 19 июня 2018 г. 21:44:54
      Я знаю что в паскале можно делать масив с отрицательнимы индексами бо я с него начинал,но такого обьема нельзя,ну я пробую у меня програма не запускается,может подскажете как оголосить масив длины 10^6*10^6 или даже больше,или все таки нельзя?
  5  Неизвестный, 18 июня 2018 г. 18:55:54
      И да я хотел зделать масив размером 10^6*10^6 а идёт стек.А воопше нету масива из отрицательнимы индексами?
     В языке Паскаль можно создавать массивы с отрицательными индексами, но и в других языках проблем с этим нет, т.к. всегда можно добавлять к индексам какое-нибудь положительное число. Но в Вашем случае скорее всего (если речь о С++) удобнее будет обойтись структурой вида map<pair<int,int>, int>. Конечно, это работает медленнее статического массива, зато в данной структуре могут храниться только нужные элементы. Но если речь идет о змейке, то вообще достаточно использовать set<pair<int,int>>. Если же известно, что диапазон возможных координат небольшой, то можно и статическим массивом обойтись.
  6  Неизвестный, 18 июня 2018 г. 18:53:13
      да но смысл хранить координаты?потом как найти когда змейка столкнётся?Ето решения я знаю,но можно както добавлять ячейку где нужно, и проверать наличее на следующем ходу,если есть ячейка,то выходить из цикла.
  7  Тер-Саркисов Богдан Олегович, 18 июня 2018 г. 17:56:14
      Можно set для координат (x, y) сделать, там хранить отмеченные координаты. Либо в map хранить соответствие (x, y) -> value. Количество операций, как я понимаю, не больше 1000000, потому что ты хотел зарезервировать поле 1000000*1000000.
  8  Неизвестный, 18 июня 2018 г. 16:57:32
      Смотрите,мне надо так добавлять елементы для того чтоб выяснить где у меня уже стоит на последуещем ходе слот. Тоесть:у меня есть команды R-добавлять вправо елемент, L-влево , U-вверх , D-вниз,и дана строка из етих команд: s = RRRUULLDRRD, и мне надо опредилить когда у меня уже на следующий ход етой в етом слоте уже будёт чтото,а не NULL. Ето как змейка,надо определить на каком ходу она столкнется со своим телом.Спасибо за ваши старания.
  9  Меньшиков Фёдор Владимирович, 18 июня 2018 г. 15:55:00
      Можно прикинуться, что добавил и ничего не делать. Вы же не написали что дальше от этого массива нужно. Оптимизации сильно зависят от того, что именно нужно сделать, что посчитать.
1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru