![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
![]()
Доброго времени суток, уважаемые эксперты. Нужна Ваша помошь. Стоит задача заполнить массив разного размера (от 4х4 до 9х9). Он должен заполняться числами от 1 до размера массива (4-9). Заполнить массив нужно так, чтобы в строках числа не повторялись дважды и по столбцам не повторялись дважды, например так, но абсолютно случайно:
1234 4123 3412 2341 Я написал свой алгоритм, который заполняет правильно, но иногда виснет и зацикливается. Я так понимаю, что иногда он просто ставит цифры так, что в конце невозможно одну из последних цифр поставить так, чтобы она не повторялась. Мой алгоритм таков: Код:
|
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Код:
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
![]()
Да случайность это очень важно в этом примере. Я пока решил сделать алгоритм так, чтобы каждая новая строка начиналась с числа равного номеру строки, а дальше числа увеличивались на единицу, пока не вылезут за границы допустимого значения. В этом случае я их делал равными единице и снова увеличивал. А потом я переставлял случайно строки, а затем случайно переставлял столбцы, вроде работает пока.
В любом случае спасибо, что откликнулся. А там посмотрю может быть доработаю твой алгоритм. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Armageddets, всё очень просто.
нужно 1) заполнить массив числами от 1 до N 2) перемешать массив случайным образом. готовый код можно взять ТУТ Добавлено а нет. мой пост "мимо кассы" я проглядел, что у Вас нужно заполнить матрицу особым образом!! Последний раз редактировалось Serge_Bliznykov; 29.04.2015 в 13:41. |
![]() |
![]() |
![]() |
#5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
По-моему эта задача не решима. Коллизии все равно будут. Нужны дополнительные условия, ИМХО.
I'm learning to live...
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Заполни первую строку случайно. Дальше каждый столбец сверху вниз циклически в последовательности первой строки. Псевдо-случайность конечно, зато решаема.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
![]()
С кучей проверок добился более менее приличного вида. Конечно может баги и будут случаться, но пока не заметил. Этот алгоритм мне нужен был для создания игры-головоломки Хитори. Спасибо всем, кто не остался равнодушен. Уже не раз меня спасали. Думаю тему можно закрывать.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запонение массива случайными не повторяющимися числами | SlayerLiving | Общие вопросы C/C++ | 3 | 27.01.2011 18:48 |
Заполнение массива неповторяющимися числами | anybkarnak | Общие вопросы C/C++ | 8 | 30.11.2009 22:31 |
Заполнение массива случайными числами | dee_lv | Общие вопросы C/C++ | 7 | 08.12.2008 21:22 |
Заполнение массива случайными числами | Roomper | Помощь студентам | 4 | 12.05.2008 22:34 |
Заполнение массива числами | Ermiss | Общие вопросы C/C++ | 7 | 25.11.2007 14:54 |