Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2010, 18:22   #1
MoroZzz45
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 14
По умолчанию Генерация всевозможных состояний массива

Дан массив Bin[8]. Он состоит из 1 и 0. Нужно каким то образом организовать всевозможные комбинации из нулей и единиц, их, как я посчитал, 352879.
Я хотел создать массив массивов, причем в каждой ячейке первого массива хранится массив(указатель), в котором и лежат собственно варианты перестановок... Все уперлось в генерацию всех вариантов перестановок.
Заранее спасибо
MoroZzz45 вне форума Ответить с цитированием
Старый 05.06.2010, 19:12   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Комбинаций вида 00000000, 00000001,... 11111110, 11111111 всего 2^8 = 256 (не забываем двоичную СС, она в программировании часто встречается). Решить задачу можно, в частности, таким в меру извращенным вариантом:
Код:
for (int i = 0; i < 256; i++)
   std::cout << IntToBinNumberStr(i) << std::endl;
где функция IntToBinNumStr переводит целое число в строку - двоичное представление этого числа. Можно также сделать массив из нулей и единиц (хоть числами, хоть символами, хоть true/false) и "увеличивать их на единицу" по правилам арифметики двоичной СС.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 05.06.2010, 19:34   #3
MoroZzz45
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 14
По умолчанию

Всего 256 комбинаций О_о... Я почему то считал факториалом
За вариант и за быстрый ответ спасибо
MoroZzz45 вне форума Ответить с цитированием
Старый 05.06.2010, 20:22   #4
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

факториал это число перестановок =)
NiCola999 вне форума Ответить с цитированием
Старый 06.06.2010, 07:03   #5
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Итак, я запутался. Нужно перебрать все варианты от 00000 до 11111
или у нас есть заранее определённое число единиц и нулей и нужно сгенерить все перестановки?
Carbon вне форума Ответить с цитированием
Старый 06.06.2010, 09:01   #6
MoroZzz45
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 14
По умолчанию

Нет, нам нужно было перебрать все варианты от 00000000 до 11111111
MoroZzz45 вне форума Ответить с цитированием
Старый 06.06.2010, 09:08   #7
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

тада 2^N как уже было сказано.
Carbon вне форума Ответить с цитированием
Старый 06.06.2010, 22:32   #8
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Код:
#include <iostream>

using namespace std;

int main()
{
	const int len = 8, base = 2;
	char a[len] = "";
	while (true)
	{
		for (int i = len - 1; i >= 0; i--)
			cout << static_cast<char>('0' + a[i]);
		cout << '\n';
		int i;
		for (i = 0; i < len && a[i] == base - 1; i++)
			a[i] = 0;
		if (i >= len)
			break;
		a[i]++;
	}
}
Somebody вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генерация массива ZORRO2005 Microsoft Office Excel 2 23.05.2010 23:47
случайная генерация The riddle Помощь студентам 5 06.10.2009 15:57
Генерация заголовка MAcK Фриланс 3 06.11.2008 11:59
Кастомизация состояний treeView checkBox NIPI Общие вопросы .NET 0 23.04.2008 07:14
генерация паролей ozhjog Общие вопросы Delphi 3 02.07.2007 08:20