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

Все возможные комбинации длины k из 0 и 1 - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.63
Fareiro
15 / 15 / 1
Регистрация: 06.12.2012
Сообщений: 130
13.01.2013, 03:54     Все возможные комбинации длины k из 0 и 1 #1
Как бы это реализовать? Подкиньте идей или может есть готовая у кого-то.
Кликните здесь для просмотра всего текста
Ввод k:3
Вывод:
0 0 1
0 1 0
1 0 0
1 1 0
0 1 1
и т.д
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
13.01.2013, 03:58     Все возможные комбинации длины k из 0 и 1 #2
тогда уж скорее
0 0 1 = 1
0 1 0 = 2
0 1 1 = 3
1 0 0 = 4
1 0 1 = 5
это просто представление чисел в двоичном виде
zvoronz
 Аватар для zvoronz
270 / 237 / 21
Регистрация: 29.05.2012
Сообщений: 889
13.01.2013, 03:59     Все возможные комбинации длины k из 0 и 1 #3
Можешь реализовать пару алгоритмов над массивами эмулирующими бинарную арифметику. Прибавляя единицу будем получать следующую комбинацию.
или
если знаете что k не будет превышать 32 или 64 то используйте просто int иди long int. Написать нужно будет алгоритм который будет выводить заданное кол-во битов переменной.
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
13.01.2013, 04:01     Все возможные комбинации длины k из 0 и 1 #4
что бы перебрать все возможные комбинации, надо каждое число в диапазоне 0 - 2^k преобразовать в двоичный вид
Fareiro
15 / 15 / 1
Регистрация: 06.12.2012
Сообщений: 130
13.01.2013, 04:03  [ТС]     Все возможные комбинации длины k из 0 и 1 #5
и так до 6ти, верно?)
Тогда хватит просто определить длину строки, взять факториал для определения количества комбинаций, брать число со счетчика, переводить в бинарный вид, и разбивать ответ.
Первое что пришло в голову. Как вам алгоритм?
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
13.01.2013, 04:08     Все возможные комбинации длины k из 0 и 1 #6
почему факториал?

Добавлено через 2 минуты
если переводить всё включая 0 то количество будет 2^k
Fareiro
15 / 15 / 1
Регистрация: 06.12.2012
Сообщений: 130
13.01.2013, 04:09  [ТС]     Все возможные комбинации длины k из 0 и 1 #7
C++
1
Число всех перестановок порядка  равно числу размещений из n по n, то есть факториалу
Или я что-то путаю?
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
13.01.2013, 04:21     Все возможные комбинации длины k из 0 и 1 #8
может я чего путаю. мне казалось, что комбинации не повторяются для всех чисел от нуля до максимального числа, которое равно radix^k radix это я так понимаю база системы счисления в данном случае 2, а k ето количество разрядов
Fareiro
15 / 15 / 1
Регистрация: 06.12.2012
Сообщений: 130
13.01.2013, 04:21  [ТС]     Все возможные комбинации длины k из 0 и 1 #9
C++
1
2
3
4
5
6
7
8
int k,k1;
    char b[30];
 
    cout<<"Enter size k: "; cin>>k;
    k1 = pow2(k);
 
    for(int i = 0; i < k1; i ++)
        cout<<ltoa(i,b,2)<<endl;
Так как вы сказали) pow2 - своя ф-ция возведения в квадрат...
Но тут проблемы с выводом До 15 вывод нарастающий от 1 до 4х битов, а дальше 5
Нужно как-то задать ему на скольких битах делать вывод
Миниатюры
Все возможные комбинации длины k из 0 и 1  
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
13.01.2013, 04:23     Все возможные комбинации длины k из 0 и 1 #10
если Вам надо немножко комбинаций, то можно использовать itoa

Добавлено через 1 минуту
C++
1
2
    cout.fill('0');
    cout<<setw(k)<<_itoa(i,b,2)<<endl;
Fareiro
15 / 15 / 1
Регистрация: 06.12.2012
Сообщений: 130
13.01.2013, 04:24  [ТС]     Все возможные комбинации длины k из 0 и 1 #11
Цитата Сообщение от UserAK Посмотреть сообщение
если Вам надо немножко комбинаций, то можно использовать itoa
Ее и использую) но надо как-то задать ей фиксированную длину на которой делать вывод...
Я понимаю что разницы между 001 и 0000 0001 нету но вид то не тот
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
13.01.2013, 04:28     Все возможные комбинации длины k из 0 и 1 #12
вот должно нулями заполнять

Добавлено через 46 секунд
Цитата Сообщение от UserAK Посмотреть сообщение
cout.fill('0');
заполняет нулями


Цитата Сообщение от UserAK Посмотреть сообщение
setw(k)
длина

Добавлено через 2 минуты
Цитата Сообщение от UserAK Посмотреть сообщение
cout.fill('0'); cout<<setw(k)<<_itoa(i,b,2)<<endl;
вот же отредактировал
Fareiro
15 / 15 / 1
Регистрация: 06.12.2012
Сообщений: 130
13.01.2013, 04:30  [ТС]     Все возможные комбинации длины k из 0 и 1 #13
Про setw знаю, а вот про cout.fill не знал)
C++
1
2
3
for(int i = 0; i < k1; i ++)
        cout.fill('0'); 
                cout<<setw(k)<<_itoa(i,b,2)<<endl;
как-то слишком монструозно, хотя и работает
---
Теперь все нормально)
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
13.01.2013, 04:32     Все возможные комбинации длины k из 0 и 1 #14
Цитата Сообщение от Fareiro Посмотреть сообщение
как-то слишком монструозно, хотя и работает
да этож разве монструозно даже цикл без фигурных скобок получился
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2013, 04:34     Все возможные комбинации длины k из 0 и 1
Еще ссылки по теме:

C++ Найти все возможные комбинации по номеру карты
C++ Все возможные комбинации пароля. Метод грубой силы(полный перебор)
Все возможные комбинации из 10 цифр по n C++

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

Или воспользуйтесь поиском по форуму:
Fareiro
15 / 15 / 1
Регистрация: 06.12.2012
Сообщений: 130
13.01.2013, 04:34  [ТС]     Все возможные комбинации длины k из 0 и 1 #15
Ха, без скобок не получится) у нас там болтается локальная переменная
Спасибо за помощь)
Yandex
Объявления
13.01.2013, 04:34     Все возможные комбинации длины k из 0 и 1
Ответ Создать тему
Опции темы

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