Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/75: Рейтинг темы: голосов - 75, средняя оценка - 4.51
0 / 0 / 0
Регистрация: 31.01.2019
Сообщений: 17
1

Разбиение на неубывающие слагаемые, лексикографический порядок

31.01.2019, 02:00. Показов 14196. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите с кодом на Паскале
Дано натуральное число N. Рассмотрим его разбиение на различные натуральные слагаемые. Два разбиения, отличающихся только порядком слагаемых, будем считать за одно, поэтому можно считать, что слагаемые в разбиении упорядочены по неубыванию.

Входные данные
Задано единственное число N. (N ≤ 40)

Выходные данные
Необходимо вывести все разбиения числа N на различные натуральные слагаемые. Порядок вывода самих разбиений – лексикографический.

Примеры
входные данные
5
выходные данные
1 1 1 1 1
1 1 1 2
1 1 3
1 2 2
1 4
2 3
5
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.01.2019, 02:00
Ответы с готовыми решениями:

Лексикографический порядок
Доброго времени суток, У нас даны некоторые строки {a}_{1},{a}_{2},...,{a}_{n} и имеется строка a,...

лексикографический порядок
Натуральные числа от 1 до N упорядочены лексикографически. Например, для N=25 результат этого...

Лексикографический порядок
Нужно на си написать код, проверяющий, является ли последовательность слов...

Лексикографический порядок
Здравствуйте, подскажите пожалуйста алгоритм упорядочивания массива строк лексикографически...

11
2350 / 1453 / 526
Регистрация: 07.04.2017
Сообщений: 4,782
31.01.2019, 14:14 2
Цитата Сообщение от 1115697 Посмотреть сообщение
Порядок вывода самих разбиений – лексикографический
Сможете объяснить простыми словами это предложение - сделаю.
0
0 / 0 / 0
Регистрация: 31.01.2019
Сообщений: 17
01.02.2019, 11:50  [ТС] 3
т.е. построчный вывод вариантов разбиения от меньшего к большему
0
2350 / 1453 / 526
Регистрация: 07.04.2017
Сообщений: 4,782
01.02.2019, 13:37 4
Всё равно не понятно. Сами слогаемые не идут в порядке от меньшего к большему, потому что
1 1 3
У вас идёт перед
1 2 2

Может вы имели в виду от наибольшего количества слагаемых к наименьшему?
1
0 / 0 / 0
Регистрация: 31.01.2019
Сообщений: 17
01.02.2019, 13:43  [ТС] 5
верно
0
5084 / 2655 / 2350
Регистрация: 10.12.2014
Сообщений: 10,046
01.02.2019, 15:07 6
Sun Serega, лексикографический порядок — это порядок возрастания некоторого алфавита.
(В данном случае алфавит содержит числа от 1 до 40 ;–)
Если, скажем, первый символ алфавита больше, следовательно это разбиение больше в лексикографическом порядке.
Если первые символы одинаковые, то начинаем сравнивать вторые, третьи и т.д.
1
2350 / 1453 / 526
Регистрация: 07.04.2017
Сообщений: 4,782
01.02.2019, 15:55 7
Лучший ответ Сообщение было отмечено 1115697 как решение

Решение

Тогда так:
Pascal
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
function EnmrAll(max: integer; min, sum: integer): sequence of List<integer>;
begin
  var last := max-sum;
  if last < min then exit;
  
  for var i := min to last-1 do
    foreach var l in EnmrAll(max, i, sum+i) do
    begin
      l.Add(i);
      yield l;
    end;
  
  var res := new List<integer>;
  res += last;
  yield res;
  
end;
 
function EnmrAll(max: integer) :=
EnmrAll(max, 1,0);
 
begin
  foreach var l in EnmrAll(ReadlnInteger) do
  begin
    l.Reverse;
    l.Println;
  end;
end.
1
0 / 0 / 0
Регистрация: 06.05.2024
Сообщений: 2
08.05.2024, 15:06 8
Я сделал функцию которая при 5 выводит:
1 1 1 1 1
1 1 1 2
1 1 3
1 2 2
1 4
2 3
5
Функция(c using namespace std):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void splitSummands(int n, vector<int>& summands, int start = 1) {
    if (n == 0) {
        for (int i = 0; i < summands.size(); i++) {
            if (i > 0) {
                cout << " ";
            }
            cout << summands[i];
        }
        cout << endl;
        return;
    }
    for (int i = start; i <= n; i++) {
        summands.push_back(i);
        splitSummands(n - i, summands, i);
        summands.pop_back();
    }
}
Как сделать чтобы она при 5 выводила:
5
2 3
1 4
1 2 2
1 1 3
1 1 1 2
1 1 1 1 1

Добавлено через 10 минут
Язык программирования не важен
0
5084 / 2655 / 2350
Регистрация: 10.12.2014
Сообщений: 10,046
09.05.2024, 11:59 9
Lf0836, цитирую:
Цитата Сообщение от Lf0836 Посмотреть сообщение
Я сделал функцию
Ну, а посмотреть на строку 3 не судьба?
0
0 / 0 / 0
Регистрация: 24.11.2021
Сообщений: 6
15.09.2024, 14:18 10
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
#include <bits/stdc++.h>
using namespace std;
 
vector<int> v;
void rec(int n, int last){
    if (n <= 0){
        if (n == 0){
            for (int i: v) cout << i << " ";
            cout << endl;
        }
        return;
    }
    for (int i = 1; i <= last; i++){
        v.push_back(i);
        rec(n-i, i);
        v.pop_back();
    }
}
 
signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n;
    cin >> n;
    rec(n, n);
}
0
17 / 16 / 1
Регистрация: 18.09.2023
Сообщений: 160
15.09.2024, 14:32 11
Цитата Сообщение от NADERT Посмотреть сообщение
#include <bits/stdc++.h>
using namespace std;
раздел PascalABC.NET
желательно и ответы давать на PascalABC.NET
0
XzzzX
16.09.2024, 10:31     Разбиение на неубывающие слагаемые, лексикографический порядок
  #12

Не по теме:

да вы чё, совсем что ли. откапываете какие-то давно умершие темы, ещё и код на плюсах постите. жесть

0
16.09.2024, 10:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.09.2024, 10:31
Помогаю со студенческими работами здесь

Лексикографический порядок
в задаче попалась фраза : отсортировать массив в порядке лексографического возрастания не...

Лексикографический порядок для строк
Помогите пожалуйста! Буду рад, любым советам(желательно с приведённым кодом), как и любой новичок....

Что такое лексикографический порядок
Меня интересует правильно ли я расположил сейчас буквы русского алфавита в лексикографическом...

Лексикографический порядок чисел на паскале
Здравствуйте!!! Помогите мне пожалуиста. Напишите программу которая расставляет числа в...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru