Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 13.11.2015
Сообщений: 5

Перебор всевозможных состояний массива

13.11.2015, 22:00. Показов 2042. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Задача:
Дан двумерный массив(скажем, 4х4) заполненный рандомным образом числами, причем числа могут быть только +1 и -1(условно говоря, два варианта заполнения ячейки массива). Нужно перебрать и зафиксировать всевозможные состояния(конфигурации) данного массива(а таких состояний 216).

Пробовал решать через рекурсию и трехмерный массив. Ни к чему дельному так и не пришел.

Подскажите пожалуйста, как наиболее корректным способом перебрать и зафиксировать конфигурации массива?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.11.2015, 22:00
Ответы с готовыми решениями:

Перебор всевозможных комбинаций, изменяемая длина и диапазон
Обгуглился уже, где - то может и видел то, что нужно, но в силу тупизны счёл не тем. Брут в общем. Есть длина строки, массив с...

Получение всевозможных комбинаций массива
необходимо получить всевозможные комбинации массива Исх. массив : 1,2,3 Комбинации : 1,2,3; 1,3,2; 2,1,3 и т.д.

Перебор элементов массива
Господа,является ли метод do_something_with_value (*iter); в коде перебора , частью API ,или это что то другое ??? int ia; int *iter...

6
Модератор
Эксперт С++
 Аватар для zss
13756 / 10951 / 6487
Регистрация: 18.12.2011
Сообщений: 29,204
13.11.2015, 22:32
Будем значение -1 записывать цифрой 0, тогда все комбинации 16 бит дадут последовательные числа от 0x0000 до oxffff=216-1
1
0 / 0 / 0
Регистрация: 13.11.2015
Сообщений: 5
15.11.2015, 22:56  [ТС]
Суть уловил, но как это реализовать? С помощью кодов Грея? Или рекурсивного перебора?

Не могли бы вы в общих чертах набросать программу?
Был бы очень благодарен.
0
0 / 0 / 0
Регистрация: 13.11.2015
Сообщений: 5
16.11.2015, 23:28  [ТС]
Суть уловил, но как это реализовать? С помощью кодов Грея? Или рекурсивного перебора?

Не могли бы вы в общих чертах набросать программу?
Был бы очень благодарен.
0
Диссидент
Эксперт C
 Аватар для Байт
27710 / 17328 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
16.11.2015, 23:58
Лучший ответ Сообщение было отмечено alex_31 как решение

Решение

Цитата Сообщение от alex_31 Посмотреть сообщение
но как это реализовать?
Прибавлением к числу 0 единички 216-1 раз
Цитата Сообщение от alex_31 Посмотреть сообщение
заполненный рандомным образом
А это здесь при чем?

Добавлено через 5 минут
Реализация:
C++ Скопировано
1
2
3
4
5
6
7
8
for(i=0, p=1; i<16; i++, p*=2) ; // p=2 в 16-той, чтобы вручную не считать
for(i=0; i<p; i++) {
  for(j=0; j<16; j++) {
    k = ((i<<j) &1) ? 1 : -1;
    a[J/4][j%4] = k;
  }
  // Вывод  (фиксация) массива a
}
2
0 / 0 / 0
Регистрация: 13.11.2015
Сообщений: 5
19.11.2015, 00:05  [ТС]
Спасибо! В итоге реализовал таким способом, но ваша программа изрядно помогла разобраться в побитовых операторах.
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        for(i = 0; i < 65536; i++)
        {
            for(j = 0; j < 4; j++)
                for(k = 0; k < 4; k++)
                {
                    if(i&(1<<((j<<2)+k)))
                    {
                        LatticeOfSpins[j][k]=1;
                    }else
                    {
                        LatticeOfSpins[j][k]=-1;
                    }
                }
        }
0
Диссидент
Эксперт C
 Аватар для Байт
27710 / 17328 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
19.11.2015, 00:24
Цитата Сообщение от alex_31 Посмотреть сообщение
но ваша программа изрядно помогла разобраться в побитовых операторах.
Приятно слышать, но у меня там опечатка в строке 5. следует читать
C++ Скопировано
1
a[j/4][j%4] = k;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.11.2015, 00:24
Помогаю со студенческими работами здесь

Перебор элементов массива
Добрый день, ув. форумчане. В наличии следующий код: int i; WCHAR *slovo = {L&quot;слово1&quot;, L&quot;слово2&quot;, ...,...

Перебор элементов массива
Доброго времени! Я новичек в С++, поэтому прошу не ругать. Вопрос - как организовать перебор элементов массива? Вот, например, в таком...

Поменять местами пары элементов в массиве
дан массив целых чисел. поменять местами пары элементов в массиве: 1 и2,3 и 4,5 и 6 и т.д.

Перебор символьного массива
Помогите, не могу написать прграмму которая добавляет символ. Например: вводим D:\myfolder\secondfolder\ , а выводим...

Перебор сумм чисел массива
Собственно по одному предмету делаю курсач, и хотелось бы себя наверняка перепроверить, да и попрактиковать лишний раз C++. Нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Организация сетей в Kubernetes и эффективное развертывание
Mr. Docker 14.04.2025
Сетевая инфраструктура Kubernetes представляет собой сложную, но хорошо спроектированную систему, которая позволяет контейнерам взаимодействовать между собой и с внешним миром. За кажущейся простотой. . .
Многопоточность в Rust: Fearless concurrency и практические примеры
golander 14.04.2025
Многопоточное программирование связано с рядом известных проблем. Наиболее распространенные из них — гонки данных (data races), взаимные блокировки (deadlocks) и условия гонки (race conditions). Эти. . .
Списки и кортежи в Python: различия, особенности, применение
py-thonny 13.04.2025
Python славится своей гибкостью при работе с данными. В арсенале языка есть две основные последовательные структуры данных, которые программисты используют ежедневно — списки и кортежи. Эти структуры. . .
Middleware в ASP.NET Core
UnmanagedCoder 13.04.2025
В ASP. NET Core термин "middleware" занимает особое место. Что же это такое? Middleware представляет собой программные компоненты, которые формируют конвейер обработки HTTP-запросов в приложении. . . .
Таблицы лута в Unity с MinMaxCurve и AnimationCurve
GameUnited 12.04.2025
Создание сбалансированного лута в играх — задача не из простых. Разработчики постоянно ищут способы настройки систем выпадения предметов, которые будут одновременно справедливыми для игроков и. . .
std::expected в C++: Управление ошибками
bytestream 12.04.2025
Обработка ошибок всегда была важной и одновременно сложной задачей в программировании на C++. На протяжении долгого времени разработчики использовали различные подходы: возвращаемые коды ошибок,. . .
Nullable типы и операторы объединения null в C#
UnmanagedCoder 12.04.2025
Многие шутят, что null — это миллиардная ошибка в программировании. И в этой шутке только доля шутки. Тони Хоар, создатель null-ссылки, сам назвал её своей "ошибкой на миллиард долларов". Почему?. . .
Аутентификация и авторизация JWT в микросервисах с API Gateway
stackOverflow 12.04.2025
В традиционных монолитных приложениях безопасность часто реализуется как единый защитный периметр - пользователь проходит аутентификацию один раз, после чего получает доступ ко всем функциям системы. . . .
TypeScript: Интерфейсы vs Типы
run.dev 11.04.2025
Современная разработка на JavaScript сталкивается с множеством проблем при масштабировании проектов. Типизация кода стала хорошим инструментом, помогающим избежать ошибок во время выполнения,. . .
Управление топиками и разделами Kafka
Javaican 11.04.2025
Apache Kafka — распределенная платформа потоковой передачи данных, которая стала стандартом для построения высоконагруженных систем обмена сообщениями. В современной архитектуре микросервисов,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер