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

Перебор неповторяющихся сочетаний - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Удалить слово слева от курсора. http://www.cyberforum.ru/cpp-beginners/thread568426.html
case 107:{ /*Ctrl-Del*/ i=xk+xt; m=0; while((*(rs+i)==' ')|(*(rs+i)=='\n')|(*(rs+i)=='\0'))i++; while((*(rs+i)!=' ')&&(*(rs+i)!='\n')&&(*(rs+i)!='\0')&&(i<100)) i++, m++; if ((m==0)&(xk==1)) /*если строка пуста, то поднимаем вверх */ { for(d=1;d<100;d++) {for (i=0;i<100;i++) *(rs+i)=*(rs+i);}
C++ Рисование ломанной линии и фиксирование её клавишей Есть такая задачка: Рисуется ломаная линия. Фиксирование первых и очередных узлов осуществляется нажатием клавиши ''Enter'', фиксирование последнего узла двойным нажатием клавиши ''Enter''. Для удаления всей ломаной линии необходимо нажать клавишу "Esc". Пробую на паскале уже неделю сделать, не получается. Добавлено через 2 часа 31 минуту проблема в фиксировании Добавлено через 6... http://www.cyberforum.ru/cpp-beginners/thread568400.html
C++ Структура - спортсмен-многоборец
10 спортсменов многоборцев принимают участие в соревнования по пяти видам спорта.по каждому виду спорта спортсмен набирает определенное количество очков.спортсмену присваивается звание мастера,если он набрал в сумме не менее k очков.сколько спортсменов получило звание мастера Добавлено через 1 минуту помогите с решением на с++...дело в том,что новичок...не всё так гладко получается:cry:
Перевернуть hex C++
как перевернуть число? чтобы 0xA5 стало 0х5А
C++ Сдвиг столбцов влево циклически - матрица http://www.cyberforum.ru/cpp-beginners/thread568369.html
Приветствую. Хотелбы узнать как реализовать такое что бы, найдя максимальный элемент в матрице, сдвинуть столбец с максимальным элементом на место первого столбца, ну и естественно остальные остолбцы сдвинуть циклически влево. Вот мой код но пока успеха мало((( cout << ("Введите колличество строк - n и столбцов - m: \n"); cout <<("Строки - "); cin >> n; cout << ("Столбцы - "); cin >> m;...
C++ как правильно юзать str() // stringstream::str #include <iostream> #include <sstream> #include <string> using namespace std; int main () { stringstream oss; string mystr; подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,930
Завершенные тесты: 1
08.05.2012, 12:44     Перебор неповторяющихся сочетаний
Тогда надо правильно писать вопрос. Перестановки (размещения) - одно, а сочетания - совсем другое. Сочетания сделать ещё проще. Исходным материалом служит массив с набором уникальных элементов (если исходные данные не соответствуют такому условию, их надо привести к такому виду). Поскольку любой элемент либо входит, либо не входит в данную комбинацию, общее число всех возможных сочетаний 2^N, где N - число элементов. В это число входит и пустое сочетание, в котором нет ни одного элемента. Если мы поставим каждому элементу в соответствие номер бита, то присутствие этого элемента в сочетании с заданным номером зависит от значения соответствующего бита:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using std::cout;
using std::endl;
 
void PrintCombination(const int array[], size_t N, size_t number)
{
    for(size_t i = 0; i<N; ++i)
        if(number & (1<<i))
            cout << array[i];
}
 
void foo()
{
    const size_t N = 7;
    const int a[N] = {1, 2, 3, 4, 5, 6, 7};
    for(size_t i=1; i<(1<<N); ++i)
        PrintCombination(a, N, i);
}
Как вариант, можно воспроизвести это обычной рекурсией без мороки с двоичной арифметикой.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru