Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
sandy_park
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 10
#1

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

14.11.2012, 00:21. Просмотров 553. Ответов 6
Метки нет (Все метки)

А вы не подскажете как в цикле забить двумерный массив всеми возможными комбинациями битов


например при 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
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2012, 00:21
Ответы с готовыми решениями:

Как расставить скобки в выражении всеми возможными способами?
В общем решаю одну непростую задачку, а условие такое: Дана строка чисел...

Разбить строку S на слова заданного набора всеми возможными способами
1.Помогите Составить программу на C++ пожалуйста(((( Дана строка S и набор Т...

Построить последовательность n!, для n=1…7 со всеми возможными перестановками из элементов этой последовательности
Помогите с задачкой...:(Построить последовательность n!, для n=1…7. Для всех...

Пол-ль вводит число от 50 до 100. Программа раскладывает число на сумму 4-х квадратов, всеми возможными способами
Пример: 39 = 1^2+2^2+3^2+5^2. Не получается написать код для этой задачи...

Дан двумерный массив размером 5 * 8, заполненный случайным образом. Вставить перед всеми строками, первый элемент которых делится на3,вставить....
Дан двумерный массив размером 5 * 8, заполненный случайным образом. Вставить...

6
Croessmah
++Ͻ
14488 / 8269 / 1553
Регистрация: 27.09.2012
Сообщений: 20,312
Записей в блоге: 3
Завершенные тесты: 1
14.11.2012, 00:57 #2
Цитата Сообщение от sandy_park Посмотреть сообщение
А вы не подскажете как в цикле забить двумерный массив всеми возможными комбинациями битов
а оно прям обязательно в двумерный массив?
0
sandy_park
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 10
14.11.2012, 01:03  [ТС] #3
а как по другому?? просто пока не представляю
0
ValeryS
Модератор
7211 / 5474 / 681
Регистрация: 14.02.2011
Сообщений: 18,515
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;
     }  
}
писал на коленке, посему ошибки сами правте
0
Ptomaine
13 / 13 / 2
Регистрация: 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;
}
0
ValeryS
Модератор
7211 / 5474 / 681
Регистрация: 14.02.2011
Сообщений: 18,515
14.11.2012, 01:27 #6
Цитата Сообщение от Ptomaine Посмотреть сообщение
n = 3, fullSize = n * n,
fullSize=9
а при n=3 всего 8 комбинаций
при n=5 fullSize=25 а комбинаций 32
так что степень 2
0
Ptomaine
13 / 13 / 2
Регистрация: 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;
}
1
14.11.2012, 01:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2012, 01:36

Забить в массив 10 чисел и вывести их в обратном порядке
забить в массив 10 чисел и вывести их в обратном порядке

Как забить в массив типа int инфу из файла?
надо с файла 1.тхт по символу (они через пробел) забить в массив mas. вот как...

Как можно вложить двумерный массив в двумерный?
Нужно написать программу перемножения двух матриц размерностью МxМ, элементы...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru