Реализовать последовательность

102
15 ноября 2020, 11:00

Мне нужно реализовать последовательность https://oeis.org/A323119 на С++, но конкретных формул нет. Как это сделать ?

Answer 1

Раз точной формулы нет, то от Вас требуется рассчитать значения самостоятельно.

Приведу намеренно примитивный способ на Python - генерация всех возможных композиций числа на слагаемые в диапазоне k..k+2 с проверкой, что в композиции действительно есть конечные значения диапазона

def comp2_int(n, mn, mx, hasmn, hasmx):
    if n == 0 and hasmn and hasmx:
        return 1
    if n < 0:
        return 0
    res = 0
    for i in range(mn, mx + 1):
        res += comp2_int(n - i, mn, mx, (i == mn) or hasmn, (i == mx) or hasmx)
    return res
def comp2(n):
    res = 0
    for k in range(1, n-1):
        res += comp2_int(n, k, k+2, False, False)
    return res
for m in range(15):
    print(m, comp2(m))
3 0
4 2
5 3
6 12
7 20
8 49
9 95
10 188
11 366
12 714
13 1347
14 2565

Более эффективно может быть использовать генерацию наборов с невозрастающими слагаемыми (например, 5=3+1+1), затем умножать на количество перестановок с повторениями (в данном случае 3=3!(2!1!)), но ещё лучше - какой-либо вид динамического программирования, когда мы повторно используем вычисленные для некоторого набора (n, min, max) (причём max-min может быть не только 2, но и 0 и 1) результаты позже.

Ну это уже для Вас упражнение.

READ ALSO
Проблема с функцие strcut_s(); [закрыт]

Проблема с функцие strcut_s(); [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

101
Подключить MariaDB на С++

Подключить MariaDB на С++

IDE CLion может переходить в библиотеку #include <mariadb/mysqlh>, то есть, файл найден, однако проект не компилируется: /home/nerd/CLionProjects/ISPstats/main

113
Сортировка списка фамилий

Сортировка списка фамилий

Это мой код по сортировке фамилий, Входят фамилии, пробегаются по функции Алфавит, и потом им присваивается соответствующее значение в массиве

106