661 / 662 / 106
Регистрация: 29.05.2015
Сообщений: 3,967
|
||||||
1 | ||||||
Как организовать хранение увеличивающихся данных - список списков?12.02.2017, 19:02. Показов 683. Ответов 3
Метки нет (Все метки)
Хочу написать программу, решающую пятнашки. В сети нашёл исходники аж 2 шт, оба работают неудовлетворительно, а именно - виснут при некоторых корректных исходных данных. Хочу сделать сам.
Имеется исходное поле, например 1 2 3 4 5 10 6 8 9 11 7 12 13 15 14 0 Данные хранятся в структуре вида:
data0, data1, data3 data0, data1, data4 data0, data2, data5 data0, data2, data6 и так далее, количество списков (и количество структур в них) будет быстро увеличиваться, но мне нужно первые 5-6-7 ходов. Вопрос - как объявлять новые структуры и как объявлять новые списки структур? Как заставить всё это работать? Затем, когда списков будет много, для каждой позиции можно будет вычислить "рейтинг", ветки с плохим рейтингом удалить, а оставшиеся продолжить - т.е. должна быть возможность удаления целых веток списков.
0
|
12.02.2017, 19:02 | |
Ответы с готовыми решениями:
3
Как организовать хранение паролей от mysql? Как организовать хранение ключей QSettings? Как лучше организовать хранение данных? Как правильно организовать хранение данных? |
66 / 66 / 18
Регистрация: 31.03.2015
Сообщений: 253
|
|
13.02.2017, 10:31 | 2 |
Попробуйте сделать QStack<data*>. На каждом шагу брать верхний елемент, проверять на тупик, создавать (если рейтинг хороший) 2-4 новых data в зависимости от положения, пихать их обратно в стек и делать следующий шаг.
0
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
13.02.2017, 11:26 | 3 |
alexu_007, Я бы использовал QHash. А в качестве ключа можно взять pole. Причем его величину можно сократить до 8 байт (16 четырехбитовых цифр)
И для 7 ходов нужно не так уж много памяти. Верхняя граница 47 = 16000. Даже меньше, поскольку "обратные" ходы смысла не имеют, 37 = 2187
0
|
13.02.2017, 11:45 | 4 |
alexu_007, На мой взгляд для подобной темы лучше применять обычное дерево.
0
|
13.02.2017, 11:45 | |
13.02.2017, 11:45 | |
Помогаю со студенческими работами здесь
4
Экзаменатор Правил Дорожного Движения. Как организовать хранение данных? Копирование данных двумерного массива состоящего из списков в список списков. «Хранение и обработка данных с использованием линейных списков». Хранение и обработка данных с использованием линейных списков Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |