Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2014, 11:42   #1
Vladislav000
 
Регистрация: 20.05.2014
Сообщений: 5
По умолчанию Перебор всех не повторяющихся сочетаний элементов в одномерном массиве

Добрый день. Есть такая проблема: нужно записать все возможные перестановки одномерного массива 1...n
Всю голову сломал, не знаю, как это можно записать через алгоритм.
Пример:
На входе мы задаем число n. После этого создается массив a[i] и заполняется числами от 1 до n попорядку (в данном случае от 1 до 5).

Мы имеем массив [1,2,3,4,5] - нужно как-то записать все подмножества, которые могут получиться, без повторов.
1,2; 1,2,3; 1,2,3,4; 1,3; 1,4; 1,3,4; 1,2,4; 2,3; 2,3,4; 2,4; 3,4;
Вот такие подмножества должны получиться, но я не знаю каким образом их можно перебрать, а главное куда и в каком виде их записать можно. Мне их надо не просто вывести, а в памяти хранить.
Нашел статейку, но что то у меня не заработало. Не смог сделать так, чтобы массив был динамическим и задавался ручками
http://wincode.org/acm-icpc/subsets-generation
сам массив задаю
Код:
#include <cstdlib>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;

int main()
{
    int num; // размер массива
    cout << "Enter integer value: ";
    cin >> num; // получение от пользователя размера массива

    int *p_darr = new int[num]; // Выделение памяти для массива
    for (int i = 0; i < num; i++) {
        // Заполнение массива и вывод значений его элементов
        p_darr[i] = i;
        cout << "Value of " << i << " element is " << p_darr[i] << endl;
    }
    delete [] p_darr; // очистка памяти
    return 0;
}
как его приткнуть сюда можно?
Код:
#include <stdio.h>
#include <stdlib.h>
//--для возведения в степень
#include <math.h>
 
int main()
{
    int M[4] = {2, 5, 6, 9}; //--множество
    int w = 4; //--кол-во элементов множества
 
    int i, j, n;
 
    n = pow(2, w);
    for ( i = 0; i < n; i++ ) //--перебор битовых маск
    {
        printf("{");
        for ( j = 0; j < w; j++ ) //--перебор битов в маске
            if ( i & (1 << j) ) //--если j-й бит установлен
               printf("%d ", M[j]); //--то выводим j-й элемент множества
        printf("}\n");
    }
    return 0;
}
Vladislav000 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в одномерном массиве из N действительных элементов, вычислить суммы элементов по условию iren1 Visual C++ 1 22.01.2014 09:26
Количество повторяющихся элементов в массиве (Язык С) Ковях Н Н Помощь студентам 0 21.01.2013 20:26
Проверить наличие в массиве повторяющихся элементов anna0404 Помощь студентам 4 14.12.2011 21:36
количество повторяющихся элементов в массиве Андрей.12 Помощь студентам 1 28.01.2010 23:57
В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму элементов массива HazelHen Общие вопросы C/C++ 2 29.03.2009 15:16