![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 17.01.2010
Сообщений: 277
|
![]()
Я работаю над небольшим проектом и не могу справится с алгоритмом. Дело в том что я оч хреново использую рекурсию на практике...
Собственно что мне нужно: Имеется матрица NxM ее элементы могут принимать значение 0 или 1 (ну типа byte). Процедура должна перебрать все возможные варианты значений всех элементов. Как я сам понял это реально сделать тока через рекурсию(ну или по крайней мере мне кажется что это наиболее простой вариант). Примерчик: Имеется матрица 2х2, все варианты: 0 0 | 0 0 | 0 0 | 0 0 | 0 1 | 0 1 | 0 1 | 0 1 0 0 | 0 1 | 1 0 | 1 1 | 0 0 | 0 1 | 1 0 | 1 1 1 0 | 1 0 | 1 0 | 1 0 | 1 1 | 1 1 | 1 1 | 1 1 0 0 | 0 1 | 1 0 | 1 1 | 0 0 | 0 1 | 1 0 | 1 1 Каждый вариант, не должен где то хранится, но можно и так) Вообще процедура должна просто перебирать их. Если вдруг возникнут какие то проблемы с матрицами, можно сделать процедуру перебирающую елементы одномерного массива с такими же элементами, соответственно его длина будет MxN Если не трудно, оставляйте подробные комментарии. Заранее очень благодарен. Последний раз редактировалось Mr_freeman; 02.03.2011 в 19:42. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
![]()
вариант конечно не супер но
for (int i=0; i<2; i++) for (int j=0; j<2; j++) for (int k=0; k<2; k++) for (int l=0; l<2; l++) cout << i << ' ' << j << ' ' << k << ' '<< l << endl; |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 04.02.2011
Сообщений: 260
|
![]()
Можно простую рекурсивную перестановку сделать как для одномерного массива размером n*m, но при каждом след i = n * m на 1 добавляем
Последний раз редактировалось Летучий_СкилетиК; 02.03.2011 в 20:11. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 17.01.2010
Сообщений: 277
|
![]()
onewho, я в делфи делаю...
Летучий скелетик, можно поподробнее?? |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
![]()
омг, ну
i,j,k,l:integer; for i:=0 for i<=1 for j:=0 for j<=1 for k:=0 for k<=1 for l:=0 for l<=1 writeln(i,' ',j,' ',k,' ',l); |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 17.01.2010
Сообщений: 277
|
![]()
onewho, в делфи никогда не видел чтоб так делали, но как я понял ты написал только для моего примера, то есть перебор 4-ех елементов. а процедура должна делать это для люього их количества..(
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
![]()
да... тогда косяк.
|
![]() |
![]() |
![]() |
#8 | |
Форумчанин
Регистрация: 04.02.2011
Сообщений: 260
|
![]()
пределы n и m какие?
Цитата:
|
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 17.01.2010
Сообщений: 277
|
![]()
Скилетик, я про рекурсию вообще мало знаю, ты можешь код выложить сюда??
Насчет границ ничего сказать не могу но я сам уже догадался что про больших ЭМ и ЭН это ппц.. |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 04.02.2011
Сообщений: 260
|
![]() Код:
Последний раз редактировалось Летучий_СкилетиК; 02.03.2011 в 20:45. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перебор всех возможных вариантов | phenix | Помощь студентам | 3 | 03.12.2010 21:29 |
Сумма четных элементов матрицы. Произведение элементов 3-го столбца. Минимальный элемент матрицы. | renovare | Помощь студентам | 2 | 03.07.2009 21:13 |
Перебор всех возможных вариантов | [MI_nor] | Общие вопросы C/C++ | 9 | 01.04.2009 21:17 |
Перебор вариантов... или что-то такое | elsin | Общие вопросы Delphi | 3 | 15.01.2009 22:13 |
Перебор элементов матрицы | pikkk | Общие вопросы Delphi | 3 | 09.05.2008 14:45 |