Форум программистов, компьютерный форум CyberForum.ru

Забить двумерный массив всеми возможными битовыми комбинациями - C++

Восстановить пароль Регистрация
 
sandy_park
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 10
14.11.2012, 00:21     Забить двумерный массив всеми возможными битовыми комбинациями #1
А вы не подскажете как в цикле забить двумерный массив всеми возможными комбинациями битов


например при n = 3 будет двумерный массив

0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

при n = 2 двумерный массив

0 0
0 1
1 0
1 1

для любого n
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2012, 00:21     Забить двумерный массив всеми возможными битовыми комбинациями
Посмотрите здесь:

C++ динамический двумерный массив (заполнить двумерный массив неизвестной длины) C++
C++ Дан двумерный массив размером 5 * 8, заполненный случайным образом. Вставить перед всеми строками, первый элемент которых делится на3,вставить....
C++ Как можно вложить двумерный массив в двумерный?
C++ Забить в массив 10 чисел и вывести их в обратном порядке
Построить последовательность n!, для n=1…7 со всеми возможными перестановками из элементов этой последовательности C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,915
Записей в блоге: 2
Завершенные тесты: 1
14.11.2012, 00:57     Забить двумерный массив всеми возможными битовыми комбинациями #2
Цитата Сообщение от sandy_park Посмотреть сообщение
А вы не подскажете как в цикле забить двумерный массив всеми возможными комбинациями битов
а оно прям обязательно в двумерный массив?
sandy_park
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 10
14.11.2012, 01:03  [ТС]     Забить двумерный массив всеми возможными битовыми комбинациями #3
а как по другому?? просто пока не представляю
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
14.11.2012, 01:10     Забить двумерный массив всеми возможными битовыми комбинациями #4
Цитата Сообщение от sandy_park Посмотреть сообщение
для любого n
прям для любого
ограничение есть по размеру числа
если возьмем размер инт 32 байта то памяти потребуется больше чем 4 ГБайта
а так примерно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int n;
cin>>n;
unsigned char ** buf;
buf=new 1<<n;
for(int i=0;i<(1<<n);i++)
   buf[i]=new n;
for(int i=0;i<(1<<n);i++)
  {
    int tmp=i;
    for(int j=0;j<n;j++)
     {
      buf[i][j]= tmp%2;
      tmp/=2;
     }  
}
писал на коленке, посему ошибки сами правте
Ptomaine
 Аватар для Ptomaine
13 / 13 / 0
Регистрация: 22.10.2011
Сообщений: 35
14.11.2012, 01:22     Забить двумерный массив всеми возможными битовыми комбинациями #5
Можно и так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
 
int main()
{
    const int n = 3, fullSize = n * n, end = fullSize - 1, imask = 1 << (n - 1);
    int **array = new int*[fullSize];
 
    for (int y = 0; y < end; ++y)
    {
        array[y] = new int[n];
 
        int mask = imask;
 
        for (int x = 0; x < n; ++x)
        {
            array[y][x] = ((y & mask) ? 1 : 0 );
 
            mask >>= 1;
        }
    }
 
    for (int y = 0; y < end; ++y)
    {
        for (int x = 0; x < n; ++x)
        {
            std::cout << array[y][x];
        }
 
        std::cout << std::endl;
 
        delete[] array[y];
    }
 
    delete[] array;
 
    return 0;
}
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
14.11.2012, 01:27     Забить двумерный массив всеми возможными битовыми комбинациями #6
Цитата Сообщение от Ptomaine Посмотреть сообщение
n = 3, fullSize = n * n,
fullSize=9
а при n=3 всего 8 комбинаций
при n=5 fullSize=25 а комбинаций 32
так что степень 2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2012, 01:36     Забить двумерный массив всеми возможными битовыми комбинациями
Еще ссылки по теме:

C++ Пол-ль вводит число от 50 до 100. Программа раскладывает число на сумму 4-х квадратов, всеми возможными способами
C++ Создать массив указателей на Person и использовать его со всеми производными классами
C++ Как забить в массив типа int инфу из файла?

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

Или воспользуйтесь поиском по форуму:
Ptomaine
 Аватар для Ptomaine
13 / 13 / 0
Регистрация: 22.10.2011
Сообщений: 35
14.11.2012, 01:36     Забить двумерный массив всеми возможными битовыми комбинациями #7
Извини, поправил:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <cmath>
 
int main()
{
    const int n = 3, fullSize = std::pow(2, n), imask = 1 << (n - 1);
    int **array = new int*[fullSize];
 
    for (int y = 0; y < fullSize; ++y)
    {
        array[y] = new int[n];
 
        int mask = imask;
 
        for (int x = 0; x < n; ++x)
        {
            array[y][x] = ((y & mask) ? 1 : 0 );
 
            mask >>= 1;
        }
    }
 
    for (int y = 0; y < fullSize; ++y)
    {
        for (int x = 0; x < n; ++x)
        {
            std::cout << array[y][x];
        }
 
        std::cout << std::endl;
 
        delete[] array[y];
    }
 
    delete[] array;
 
    return 0;
}
Yandex
Объявления
14.11.2012, 01:36     Забить двумерный массив всеми возможными битовыми комбинациями
Ответ Создать тему
Опции темы

Текущее время: 16:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru