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

Нахождение разбиений числа - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Взять элементы из определенного листа http://www.cyberforum.ru/cpp-beginners/thread1787463.html
list<int>route; vector<list<int>>routes; route.push_back(.) routes.push_back(route) for(int start = 0 ; start = routes.size();start++) { for().. for()..
C++ Построить латинский квадрат используя циклический сдвиг Написать программу для решения следующей задачи. построить латинский квадрат,используя циклический сдвиг. Латинский квадрат-матрица размером N x N, элементы которой равны 1,2..N и каждое число встречается только один раз в каждой строке и каждом столбце. Это нужно через объекты делать) Заранее огромное человеческое спасибо!!!)) http://www.cyberforum.ru/cpp-beginners/thread1787439.html
C++ Примерная реализация std vector bool
добрый вечер, не могу найти в сети реализацию st::vector<bool> - есть у кого под рукой?) Почитать)
C++ В какой последовательности начать изучать языки программирования?
Появился интерес к C++, но после того, как начал читать про него подробнее, наткнулся на информацию о том, что что бы легче было понимать функции и вообще в целом его, сначала нужно изучить Pascal. Потом вообще начал думать о том, в какой же последовательности их изучать, что бы потихоньку учиться от легкого к сложному, вот теперь и обращаюсь к знающим людям. В последовательности можно предлагать...
C++ Архитектура компоновки http://www.cyberforum.ru/cpp-beginners/thread1787390.html
Научился кодить(более менее), но все таки остались пробелы в понимании. Искал в гугле данные темы, но во всех очень поверхностно и шаблонно. Я хотел бы узнать у знающих людей как устроена связь между заголовочником(.h) и файлом исполняемым (.сpp), на конкретном примере. //sum.h int sum (int, int); //sum.cpp #include "sum.h" int sum(int a,int b) { return a+b;
C++ Тернарный оператор "?" Добрый Вечер . Столкнулся с вопросом помогите понять хочу разобраться с ходом ее работы. #include <iostream> using namespace std; int main() { int a; a=0?a=1:a=2?a=3:a=4?a=5:a=6; подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,655
30.07.2016, 07:17     Нахождение разбиений числа
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
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
///////////////////////////////////////////////////////////////////////////////
typedef std::vector     < int           >   T_partition;
typedef std::vector     < T_partition   >   T_partitions;
///////////////////////////////////////////////////////////////////////////////
void    add_partitions
    (
        int                 num,
        int                 min,
        int                 max,
        T_partitions    &   partitions,
        T_partition         prefix  =   {}
    )
{
    if( !num )
    {
        partitions.emplace_back( prefix );
        return;
    }
 
    for (
            int
            i   =   std::max( 1,    min );
            i   <=  std::min( max,  num );
            ++i
         )
    {
        auto    prefix_cur          ( prefix );
        prefix_cur.emplace_back     (i);
 
        add_partitions
            (
                num - i,
                i,
                max,
                partitions,
                prefix_cur
            );
    }//for
}
///////////////////////////////////////////////////////////////////////////////
void    print_partitions( T_partitions  const   &   partitions )
{
    for( auto   const   &   partition   :   partitions )
    {
        std::copy
            (
                partition.begin             (),
                partition.end               (),
                std::ostream_iterator<int>  ( std::cout,    " " )
            );
        std::cout   <<  std::endl;
    }//for
    std::cout   <<  std::endl;
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::cout   <<  "num\t= ";
    int     num{};
    std::cin    >>  num;
 
    std::cout   <<  "min\t= ";
    int     min{};
    std::cin    >>  min;
 
    std::cout   <<  "max\t= ";
    int     max{};
    std::cin    >>  max;
 
    T_partitions    partitions;
 
    add_partitions
        (
            num,
            min,
            max,
            partitions
        );
 
    if  (
            partitions.empty()
        )
    {
        std::cout   <<  "no solutions"
                    <<  std::endl;
    }
    else
    {
        print_partitions( partitions );
    }
}
 
Текущее время: 20:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru