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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Настя_111
4 / 4 / 0
Регистрация: 12.05.2010
Сообщений: 159
#1

Рекурсия: размещения из 10 по 3 элемента - C++

14.06.2010, 22:07. Просмотров 1117. Ответов 1
Метки нет (Все метки)

Помогите Плз Плз Плз Плз Плз

Получить все размещения из 10 элементов 1, 2,..., 10 по 3 в каждом. Размещением называется выборка из п указанных элементов т неповторяющихся элементов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2010, 22:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Рекурсия: размещения из 10 по 3 элемента (C++):

Рекурсия. Комбинаторика. Размещения - C++
Дана задача: вывести все размещения из n по k, где n - это число элементов конечного множества (например, задаваемого из файла). Комбинации...

Рекурсия: вывести все возможные размещения элементов массива - C++
Дан массив char mas = { a, b, c, d, e, f, g, h, j, k }. Вывести на экран все возможные комбинации букв ( каждая комбинация = 10 символов )

Рекурсия, поиск второго максимального элемента - C++
Не получается выполнить задание: Данная последовательность натуральных чисел (одно число в строке), что завершается числом 0. ...

Рекурсия: нахождение минимального элемента массива - C++
Определить рекурсивную функцию,возвращающую минимальный элемент массива.Использовать её для одномерного массива,содержащего n целых...

Рекурсия: найти индекс нулевого элемента массива - C++
Задан массив целых чисел: а0, а1 ..., аn-1. Известно, что один из элементов массива принимает нулевое значение. Найти номер данного...

Рекурсия: удалить из списка (цепочки) L все вхождения элемента Е - C++
Описать рекурсивную функцию, которая удаляет из списка (цепочки) L все вхождения элемента Е.

1
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
15.06.2010, 06:39 #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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
//Получить все размещения из 10 элементов 1, 2,..., 10 по 3 в каждом. 
//Размещением называется выборка из п указанных элементов т неповторяющихся элементов. 
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
 
 
typedef std::string         T_str;
typedef int                 T_num;
typedef std::vector<T_num>  T_nums;
 
class T_generate_podrjad_from
{
    T_num  first_num_;
public:
    T_generate_podrjad_from(T_num  first_num) : first_num_(first_num)
    {}
 
    T_num operator()()
    {
        return first_num_++;
    }
};
 
T_nums  get_n_nums_podrjad_from(T_num  nums_size, T_num  begin_num)
{
    T_nums  nums(nums_size);
    std::generate(nums.begin(), nums.end(), T_generate_podrjad_from(begin_num));
    return  nums;
}
 
void print_nums(const T_nums&  nums)
{    
    std::copy(nums.begin(), nums.end(), std::ostream_iterator<T_num>(std::cout, " "));
    std::cout << "   ";  
}
 
typedef std::set<T_num> T_nums_set;
 
void  print_all_razmetch
    (
        const T_nums&  nums_nabor, 
        const T_num    last_razmetsh_ind,
        T_nums&        razmetsh
    )
{    
    for(T_nums::const_iterator  nabor_num_it = nums_nabor.begin();
        nabor_num_it != nums_nabor.end(); ++nabor_num_it)    
    { 
        if(last_razmetsh_ind > 0)
        {
            T_nums_set  razmetsh_nums_set
                (razmetsh.begin(), razmetsh.begin() + last_razmetsh_ind);
            if(razmetsh_nums_set.count(*nabor_num_it) > 0)
            {
                continue;
            }        
        }        
        
        razmetsh[last_razmetsh_ind] = *nabor_num_it;
        if(last_razmetsh_ind == razmetsh.size() - 1)
        {
            print_nums(razmetsh);
        }
        else
        {
            print_all_razmetch
                (
                    nums_nabor, 
                    last_razmetsh_ind + 1, 
                    razmetsh
                );            
        }             
    }//for(T_nums::const_iterator  nabor_num_it = nums_nabor.begin();
}
 
int main()
{
    std::locale::global(std::locale(""));
    for(;;)
    {
        std::cout << std::endl
                  << std::endl;
        T_num n;
        std::cout << "Введите размер исходного множества: ";
        std::cin >> n;
        if(n < 1) return EXIT_FAILURE;
        
        std::cout << "Введите значение первого элемента исходного множества: ";
        T_num  num_begin;
        std::cin >> num_begin;
        
        T_num  m;
        do
        {
            std::cout << "Введите размер размещения: ";
            std::cin >> m;        
        }while(m < 1 || n < m);
        //Генерируем начальный вектор.
        T_nums  nums_nabor = get_n_nums_podrjad_from(n, num_begin);
        T_nums  razmetsh(m);
        print_all_razmetch(nums_nabor, 0, razmetsh);    
    }   
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2010, 06:39
Привет! Вот еще темы с ответами:

Рекурсия: вывести лишь те элементы, которые являются суммой 2-х предыдущих и меньше следующего элемента - C++
Вводится последовательность целых чисел. Необходимо вывести лишь те числа, которые являются суммой 2х предыдущих и меньше следующего...

Рекурсия: получить все размещения из 10 элементов по 3 в каждом - C++ Builder
Получить все размещения из 10 элементов 1, 2,..., 10 по 3 в каждом. Размещением называется выборка из п указанных элементов т...

Получить все размещения из 9 элементов по 3 элемента в каждом - C#
1) Получить все размещения из 9 элементов 1,2,3,..9 по 3 элемента в каждом. Отсортировать их как десятичные числа по убыванию (В...

Рекурсия: Найти путь от элемента первой строки матрицы до элемента последней с максимальной суммой - Turbo Pascal
ЛР 11. Дана матрица a(m, n). Найдите в ней путь от элемента первой строки матрицы до элемента последней строки с максимальной суммой....


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

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

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