|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.03.2011, 19:39 | #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. |
02.03.2011, 19:54 | #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; |
02.03.2011, 19:56 | #3 |
Форумчанин
Регистрация: 04.02.2011
Сообщений: 260
|
Можно простую рекурсивную перестановку сделать как для одномерного массива размером n*m, но при каждом след i = n * m на 1 добавляем
Последний раз редактировалось Летучий_СкилетиК; 02.03.2011 в 20:11. |
02.03.2011, 19:58 | #4 |
Форумчанин
Регистрация: 17.01.2010
Сообщений: 277
|
onewho, я в делфи делаю...
Летучий скелетик, можно поподробнее?? |
02.03.2011, 20:01 | #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); |
02.03.2011, 20:10 | #6 |
Форумчанин
Регистрация: 17.01.2010
Сообщений: 277
|
onewho, в делфи никогда не видел чтоб так делали, но как я понял ты написал только для моего примера, то есть перебор 4-ех елементов. а процедура должна делать это для люього их количества..(
|
02.03.2011, 20:13 | #7 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
да... тогда косяк.
|
02.03.2011, 20:15 | #8 | |
Форумчанин
Регистрация: 04.02.2011
Сообщений: 260
|
пределы n и m какие?
Цитата:
|
|
02.03.2011, 20:31 | #9 |
Форумчанин
Регистрация: 17.01.2010
Сообщений: 277
|
Скилетик, я про рекурсию вообще мало знаю, ты можешь код выложить сюда??
Насчет границ ничего сказать не могу но я сам уже догадался что про больших ЭМ и ЭН это ппц.. |
02.03.2011, 20:35 | #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 |