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

Получить все n-элементные последовательности из нулей и единиц содержащие ровно m единиц (m<=n) - C++

Восстановить пароль Регистрация
 
Argentum21
1 / 1 / 0
Регистрация: 05.03.2014
Сообщений: 75
08.06.2014, 23:23     Получить все n-элементные последовательности из нулей и единиц содержащие ровно m единиц (m<=n) #1
Получить все n-элементные последовательности из нулей и единиц содержащие ровно m единиц (m<=n)
Помогите, пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2014, 23:23     Получить все n-элементные последовательности из нулей и единиц содержащие ровно m единиц (m<=n)
Посмотрите здесь:

найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц C++
C++ Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц
Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц C++
C++ Перечислить все последовательности из n нулей, единиц и двоек, в которых никакая группа цифр не повторяется два раза подряд (нет куска вида XX )
C++ Перечислить все последовательности из n нулей, единиц и двоек, в которых никакая группа цифр не повторяется два раза подряд (нет куска вида XX )
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
09.06.2014, 02:10     Получить все n-элементные последовательности из нулей и единиц содержащие ровно m единиц (m<=n) #2
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
#include <iostream>
#include <algorithm>
#include <conio.h>
 
int main()
{
    int n, m;
    std::cout << "Type n: "; std::cin >> n;
    std::cout << "Type m: "; std::cin >> m;
    int* arr = new int[n];
    for(int i = 0; i < n; i++)
    {
        if(i >= n - m)
            arr[i] = 1;
        else
            arr[i] = 0;
    }
    
    std::sort(arr, arr + n);
    std::cout << std::endl;
 
    do
    {
        for(int i = 0; i < n; i++)
            std::cout << arr[i];
        std::cout << std::endl;
    } 
    while(std::next_permutation(arr, arr + n));
    
    delete [] arr;
    
    std::cout << "\nOperation succeeded\n";
    getch();  
    return 0;
}
Argentum21
1 / 1 / 0
Регистрация: 05.03.2014
Сообщений: 75
09.06.2014, 18:00  [ТС]     Получить все n-элементные последовательности из нулей и единиц содержащие ровно m единиц (m<=n) #3
GuGo1991, скажите, пожалуйста, что означают эти строки и как можно переписать их попроще?
C++
1
2
std::sort(arr, arr + n);
 while(std::next_permutation(arr, arr + n));
Спасибо.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
09.06.2014, 18:23     Получить все n-элементные последовательности из нулей и единиц содержащие ровно m единиц (m<=n) #4
Цитата Сообщение от Argentum21 Посмотреть сообщение
GuGo1991, скажите, пожалуйста, что означают эти строки и как можно переписать их попроще?
std::sort(arr, arr + n);
while(std::next_permutation(arr, arr + n));

Спасибо.
sort - сортировка
next_permutation - следующая перестановка http://ru.wikipedia.org/wiki/%D0%9B%...B4%D0%BE%D0%BA
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
09.06.2014, 18:27     Получить все n-элементные последовательности из нулей и единиц содержащие ровно m единиц (m<=n) #5
Argentum21, поверьте мне проще некуда. Если расписать next_permutation, который в свою
очередь использует функции iter_swap() и reverse(), расписать и эти фунуции тоже, проще точно не будет.
std::sort(arr, arr + n); кстати можете убрать, сортировку я выполнил в первом цикле.
Yandex
Объявления
09.06.2014, 18:27     Получить все n-элементные последовательности из нулей и единиц содержащие ровно m единиц (m<=n)
Ответ Создать тему
Опции темы

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