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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 41, средняя оценка - 4.93
Modlika
0 / 0 / 0
Регистрация: 10.04.2009
Сообщений: 3
#1

Перебор всех возможных подмножеств множества целых чисел - C++

10.04.2009, 20:27. Просмотров 5655. Ответов 10
Метки нет (Все метки)

Всем привет))))
Пожалуйста, помогите решить задачку!!!!! Очень нужно, срочно!!!
Программа перебора всех возможных подмножеств множества целых чисел,т.е.
если с клавиатуры вводим, например 3, то на экране должно быть:
123
12
23
13
3
2
1
Заранее СПАСИБО!!!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2009, 20:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перебор всех возможных подмножеств множества целых чисел (C++):

Перебор всех возможных подмножеств заданного множества целых чисел - C++
Помогите решить задачу. Есть заданное множество целых чисел: -1 0 1. Нужно перебрать все возможные способы размещения в векторе, этих...

Генерация всех подмножеств данного множества - C++
Друзья, помогите написать программку в консольном приложении VS 2008, задание такое: Генерация всех подмножеств данного множества Буду...

Организовать перебор всех возможных сочетаний - C++
Затрудняюсь с алгоритмом. Как можно организовать перебор всех возможных группировок? Имеется несколько романов одного писателя. Для...

Перебор и вывод всех возможных сочетаний - C++
Итак,здравствуйте форумчане. Привела меня к вам интересная задачка. Вводится слово,заранее не известно количество букв необходимо...

Реализовать перебор всех возможных IP-адресов (С++) - C++
Реализовать перебор всех возможных IP-адресов, начиная с 0.0.0.0, заканчивая 255.255.255.0. (проще говоря перебор всех возможных комбинаций...

Перебор всех возможных сочетаний заданных переменных - C++
Чтобы не создавать новую тему, напишу здесь. Есть несколько переменных - около 20, часть переменных может иметь 2 значения, часть - три...

10
RazorQ
578 / 345 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
10.04.2009, 22:37 #2
Я логику понять не могу. Ну допустим "123" - присутствует три. "12" - в сумме дает 3, а "1" или "2" тут причем?
0
Monte-Cristo
2790 / 1376 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
10.04.2009, 22:48 #3
RazorQ, для этого необходимо учить дискретную математику.... подмножества и множества....
0
RazorQ
578 / 345 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
10.04.2009, 22:51 #4
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
RazorQ, для этого необходимо учить дискретную математику.... подмножества и множества....
Я подмножества и множества знаю, но связать материал не могу
0
Monte-Cristo
2790 / 1376 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
10.04.2009, 23:08 #5
ну тогда что не понятного?
3 - означает что в нем можно выделить следующие подмножества:
{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}

для 4 вот:
{1},{2},{3},{4},{1,2},{1,3},{1,4},{2,3},{2,4},{3,4},{1,2,3},{1,2,4},{2,3,4},{1,2,3,4}
0
RazorQ
578 / 345 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
10.04.2009, 23:10 #6
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
ну тогда что не понятного?
3 - означает что в нем можно выделить следующие подмножества:
{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}

для 4 вот:
{1},{2},{3},{4},{1,2},{1,3},{1,4},{2,3},{2,4},{3,4 },{1,2,3},{1,2,4},{2,3,4},{1,2,3,4}
Точно точно. Блин стыдно
0
darkAngel
Технофашист
216 / 199 / 4
Регистрация: 11.03.2009
Сообщений: 883
11.04.2009, 08:45 #7
По-идее тогда нужно включать и пустое множество {0}.

Я попробывал что-то сделать побыстрому, но тут, походу, думать нужно серьёзно.
0
Modlika
0 / 0 / 0
Регистрация: 10.04.2009
Сообщений: 3
11.04.2009, 11:44  [ТС] #8
Мне сказали, что пустое множество не обязательно)))
0
Практолок
0 / 0 / 0
Регистрация: 11.04.2009
Сообщений: 12
11.04.2009, 12:02 #9
Введенное число - количество разрядов двоичного числа, для каждово значения которого (в случае с введеным числом 3 это будут значения от 1 до 8 соответственно) нужно просто перечислить включенные в нем биты. Можно конечно и через рекурсии, но это не так смешно получится.
0
Exit
Сообщений: n/a
11.04.2009, 17:14 #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
const n=3;
for(int i=0; i<(2 в степени n);i++)
{int y=i;
 int j=1;
        while (y>0){
                int x=y;
                y=y/2;
                if ((x-2*y)==1)
                        printf ("%d ", j);
                j++;
        }
  printf("\n");
}
ну примерно так
Modlika
0 / 0 / 0
Регистрация: 10.04.2009
Сообщений: 3
11.04.2009, 23:19  [ТС] #11
Нашла в инете кое-какой исходник, он хорошо работает, выводит именно то что мне нужно, но я совсем не могу разобраться как???????? не понимаю алгоритма((((
Объясните кто-нибудь, плиииииз)))))))
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
#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
 
void fun(int N, int m, int tek, int k, string tekS)
{
 if(tek>=m)
  {
   cout<<tekS<<endl;
   return;
  }
 for(int i=k+1; i<=N; i++)
  fun(N,m,tek+1,i,tekS+(char)(i+48));
 
}
 
int main()
{
int N;
cout<<"Enter N: ";
cin>>N;
for(int i=1;i<=N;i++)
 fun(N,i,0,0,"");
 
getch();
return 0;
}
Пояснение аргументов функции:

void fun(int N, int m, int tek, int k, string tekS)
N - собственно, N
m - длина подмножества. Изменяется от 1 до N
tek - номер текущего элемента подмножества. Изменяется от 1 до m
k - значение предыдущего элемента
tekS - строка, в которую пишутся элементы подмножества

Добавлено через 3 минуты 0 секунд
Нашла в инете кое-какой исходник, он хорошо работает, выводит именно то что мне нужно, но я совсем не могу разобраться как???????? не понимаю алгоритма((((
Объясните кто-нибудь, плиииииз)))))))
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
#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
 
void fun(int N, int m, int tek, int k, string tekS)
{
if(tek>=m)
{
cout<<tekS<<endl;
return;
}
for(int i=k+1; i<=N; i++)
fun(N,m,tek+1,i,tekS+(char)(i+48));
 
}
 
int main()
{
int N;
cout<<"Enter N: ";
cin>>N;
for(int i=1;i<=N;i++)
fun(N,i,0,0,"");
 
getch();
return 0;
}
Пояснение аргументов функции:

void fun(int N, int m, int tek, int k, string tekS)
N - собственно, N
m - длина подмножества. Изменяется от 1 до N
tek - номер текущего элемента подмножества. Изменяется от 1 до m
k - значение предыдущего элемента
tekS - строка, в которую пишутся элементы подмножества
0
11.04.2009, 23:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2009, 23:19
Привет! Вот еще темы с ответами:

Перебор всех возможных вариантов с переменными приравненных к определенному значению - C++
Помогите решить задачу: Есть 3 переменные А, В, С и у каждого из них какое-то целочисленное значение, которое задает пользователь. Нужно...

Перебор всех возможных способов размещения n различных предметов по m различным ящикам - C++
Ребят, я на этом форуме не очень давно и хочу попросить помощи, Задача такого рода: написать программу перебора всех возможных способов...

Перебор возможных значений для трёх чисел - C++
Доброго времени суток. Нужно перебрать все возможные значения трёх чисел. их сума равна 1. перебрать нужно с шагом 0,01, например 0,01...

Из множества целых чисел получить множество чисел, являющихся квадратами нечетных чисел - C++
Из множества целых чисел получить множество чисел, являющихся квадратами нечетных чисел.


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

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

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