Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/162: Рейтинг темы: голосов - 162, средняя оценка - 4.88
28 / 27 / 11
Регистрация: 12.03.2009
Сообщений: 85

Лесенка - динамическое программирование

19.08.2009, 09:48. Показов 31256. Ответов 51
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте. У меня есть одна классическая задачка про Лесенку.

Лесенка
Лесенкой называется набор кубиков, в котором каждый более верхний слой содержит кубиков меньше, чем предыдущий. Требуется написать программу, вычисляющую число лесенок, которое можно построить из N кубиков.

Входные данные
Во входном файле INPUT.TXT записано натуральное число N (1 ≤ N ≤ 100) – количество кубиков в лесенке.

Выходные данные
В выходной файл OUTPUT.TXT необходимо вывести число лесенок, которые можно построить из N кубиков.

Примеры
INPUT.TXT OUTPUT.TXT
3 2
6 4

Я решил эту задачку с помощью грубого перебора и проходит тесты. Но я слышал что есть и другое эффективное решение с помощью динамическое программирование. Помогите решить.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.08.2009, 09:48
Ответы с готовыми решениями:

Динамическое программирование
гайс, помогите пожалуйста есть одномерный массив длинной N мы можем ходить по массиву с шагом от I до J(только вперёд офк), скажем...

Динамическое программирование
Есть задача: Необходимо подсчитать кол-во вариантов и вывести их для сдачи для некой суммы от 1 к ... до 10 р монетами достоинством...

Динамическое программирование
Приветствую, форумчане. Так уж вышло, что жизнь свела меня с динамическим программированием. Есть задача: Стрелок стреляет по мишеням....

51
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
21.08.2009, 14:30
Студворк — интернет-сервис помощи студентам
chelovechek, что-то маловато получается.
Мой вариант (в правильности не уверен):
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
#include <fstream>
 
using namespace std;
 
int main()
{
    fstream fin;
    int n;
    fin.open("input.txt", ios::in);
    fin >> n;
    fin.close();
    
    int a[101][101];
    
    for (int cn = 1; cn <= n; cn++)
        a[cn][0] = 0;
    for (int cm = 0; cm <= n; cm++)
        a[0][cm] = 1;
        
    for (int cn = 1; cn <= n; cn++)
    {
        for (int c = 1; c <= cn; c++)
            a[cn][c] = a[cn][c - 1] + a[cn - c][c - 1];
        for (int c = cn + 1; c <= n; c++)
            a[cn][c] = a[cn][cn];
    }
    
    fstream fout;
    fout.open("output.txt", ios::out | ios::trunc);
    fout << a[n][n];
    fout.close();
    return 0;
}
a[n][m] - количество лесенок из n кубиков со слоями не шире m.
cn - текущее количество кубиков, c - текущий размер нижнего слоя. (Из любого количества кубиков при нулевой ширине нельзя ничего сложить, из нуля кубиков всегда есть одна "пустая" лесенка.)
2
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.08.2009, 14:32
chelovechek, что-то маловато получается.
Подтверждаю. Да и последовательность совсем неправильно.
Если кому интересно, последовательность примерно эта.
http://www.research.att.com/~n... &go=Search
0
 Аватар для Toxa33rus
3926 / 928 / 125
Регистрация: 16.04.2009
Сообщений: 1,983
21.08.2009, 14:33
chelovechek, может я не так понял задание, но я понял так что надо найти не высоту лесенки а кол-во различных комбинаций.
Вот Ваш код выдает:
3=2
4= 2
5= 2
6= 3
7= 3
8= 3
9= 3
10= 4
11= 4
12= 4

а вот как д.б.:
3 2
4 2
5 3
6 4
7 5
8 6
9 8
10 10
11 12
12 15
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
21.08.2009, 14:46
Цитата Сообщение от Puporev Посмотреть сообщение
Подтверждаю. Да и последовательность совсем неправильно.
Если кому интересно, последовательность примерно эта.
http://www.research.att.com/~njas/sequences/?q=1%2C1%2C2%2C2%2C3%2C4%2C5%2C6%2C8%2C10%2C12%2C15%2C18%2C21&sort=2&fmt=0&language=english&go=Search
Пересчёт вручную для 14 дал 22, наверное, тогда
http://www.research.att.com/~njas/sequences/?q=1%2C1%2C2%2C2%2C3%2C4%2C5%2C6%2C8%2C10%2C12%2C15%2C18%2C22
Неужели у меня правильно?..
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.08.2009, 15:04
Пересчёт вручную для 14 дал 22, наверное, тогда
Не пойму что я пропустил?
14-0
13-1
12-2
11-3
11-2-1
10-4
10-3-1
9-5
9-4-1
9-3-2
8-6
8-5-1
8-4-2
8-3-2-1
7-6-1
7-5-2
7-4-3
7-4-2-1
6-5-3
6-5-2-1
6-4-3-1
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
21.08.2009, 15:15
Ещё 5-4-3-2
1
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
21.08.2009, 16:01
what is a staircase? should the step width be constant for a staircase, or the only constraint is that the layer above should contain at least one unit less (or at least may not contain more)?
in other words: which of the following staircases (pyramid) are valid, and which - not, and why (bottom to the top)?

0. 5,4,1
1. 6,4,2
2. 6,4,4,2
3. 8,8,6,6,4,4,2,2
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
21.08.2009, 17:12
Цитата Сообщение от novi4ok Посмотреть сообщение
what is a staircase?
Вроде же понятно написано
Лесенкой называется набор кубиков, в котором каждый горизонтальный слой содержит меньше кубиков, чем слой под ним.
Отсюда следует, что 0 и 1 верны, 2 и 3 - нет.
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.08.2009, 18:26
Можно сказать количество ступенек включая верхнюю, причем ступеньки могут быть разной ширины.

Добавлено через 55 минут 30 секунд
Вообще хорошее решение. Если вывести матрицу на экран, в последнем столбце как раз будет эта последовательность.
http://www.research.att.com/%7... %2C18%2C22

Добавлено через 2 минуты 23 секунды
Мой вариант (в правильности не уверен):
Я проверял в Паскале, все считает правильно.
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
22.08.2009, 20:21
тогда я бы так посчитал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//////////////////
long countStaircases (long numberPieces, long piecesInUpperLayer){
 
    long myPeaces;
    long peacesDown;
    long retVal = 0;
    if (numberPieces > piecesInUpperLayer){
        retVal++;       // we can make at least one variant (all pieces in line in one layer)
        myPeaces = piecesInUpperLayer+1;
        peacesDown = numberPieces-myPeaces;
        while (peacesDown > myPeaces){
            retVal += countStaircases (peacesDown--, myPeaces++);
        }
    }
    return retVal;
}
а если и конкретно сами комбинации интересуют:

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
call:
 
std::string str;
long n = getStaircases (8, 0, &str, NULL);
 
//////////////////
long getStaircases (long numberPieces, long piecesInUpperLayer, std::string *pStaircaseStr, std::string *pPrefixStr){
 
    char buffer [64];
 
    long myPeaces;
    long peacesDown;
    long retVal = 0;
    std::string staircaseStr;
    std::string myPrefixStr;
    pStaircaseStr->clear();
    if (numberPieces > piecesInUpperLayer){
        retVal++;       // we can make at least one variant (all pieces in line in one layer)
        if (pPrefixStr != NULL){
            *pStaircaseStr = *pPrefixStr;
            myPrefixStr = *pPrefixStr;
        }
        ::sprintf (buffer, "%u", numberPieces);
        *pStaircaseStr += buffer;
        myPeaces = piecesInUpperLayer+1;
        peacesDown = numberPieces-myPeaces;
        while (peacesDown > myPeaces){
            if (pPrefixStr != NULL){
                myPrefixStr = *pPrefixStr;
            } else {
                myPrefixStr.clear();
            }
            ::sprintf (buffer, "%u+", myPeaces);
            myPrefixStr += buffer;
            retVal += getStaircases (peacesDown, myPeaces, &staircaseStr, &myPrefixStr);
            *pStaircaseStr += ';';
            *pStaircaseStr += staircaseStr;
            peacesDown--;
            myPeaces++;
        }
    }
    return retVal;
}
работать будет, правда, медленно, и эта подпрограмма посчитает правильно максимум для 225 кубиков, потом long (4 байта) переполняется и переходит в отрицательные числа. можно unsigned написать, но тогда вы никогда не узнаете о переполнении. можно ускорить, создав контейнер, где хранить уже просчитанные, и, если искомые виды лесенок в нем имеются - брать оттуда. в общем - широкое поле деятельности по бесконечному улучшению. жаль - бесполезно
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
22.08.2009, 22:33
Вывод всех вариантов для кубов от 0 до N.
Для ускорения ранее найденные значения складываются в массив ppvar.

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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <stdio.h>
#include <stdlib.h>
 
int max_cub= 0;
int **ppvar= NULL;
 
void init_lesenka( int new_max_cub );
void final_lesenka( void );
int get_var( int cub, int width );
int calc_var( int cub, int width );
void print_ppvar();
 
 
/**************************************/
int main( int argc, char *argv[] ) {
 
int n, i;
 
argc--; argv++;
if ( argc != 1 ) {
    fprintf( stderr, "Usage: lesenka N\n" );
    exit( 2 );
}
n= atoi( argv[0] );
 
init_lesenka( n );
 
print_ppvar();
printf( "\n" );
 
printf( "n  " );
for ( i= 0; i<=n; i++ ) { printf( " %3d", i ); }
printf( "\n" );
 
printf( "var" );
for ( i= 0; i<=n; i++ ) { printf( " %3d", get_var( i, i ) ); }
printf( "\n" );
 
final_lesenka();
 
return 0;
 
} // main()
 
 
/**************************************/
void init_lesenka( int new_max_cub ) {
 
int i, j;
 
if ( ppvar != NULL ) { return; }
if ( new_max_cub>1 ) { max_cub= new_max_cub; } else { max_cub= 1; }
 
ppvar= (int**)malloc( (max_cub+1)*sizeof(int*) );
for ( i= 0; i<=max_cub; i++ ) {
    ppvar[i]= (int*)malloc( (max_cub+1)*sizeof(int) );
    for ( j= 0; j<=max_cub; j++ ) { ppvar[i][j]= -1; }
}
ppvar[0][0]= 1;
ppvar[1][1]= 1;
 
for ( i= 0; i<=max_cub; i++ ) {
    for ( j= 0; j<=i; j++ ) {
        calc_var( i, j );
    }
}
 
} // init_lesenka()
 
/**************************************/
void final_lesenka( void ) {
 
int i;
 
if ( ppvar == NULL ) { return; }
for ( i= 0; i<=max_cub; i++ ) {
    free( ppvar[i] );
}
free( ppvar );
ppvar= NULL;
max_cub= 0;
 
} // final_lesenka()
 
 
/**************************************/
int get_var( int cub, int width ) {
 
if ( cub<0 || cub>max_cub || width<0 ) { return -1; }
 
if ( cub<width ) { width= cub; }
return ppvar[cub][width];
 
} // get_var()
 
 
/**************************************/
int calc_var( int cub, int width ) {
 
int w, sum;
 
if ( cub<width ) { width= cub; }
if ( ppvar[cub][width] >= 0 ) { return ppvar[cub][width]; }
 
sum= 0;
for ( w= 1; w<=width; w++ ) {
    sum+= calc_var( cub-w, w-1 );
}
ppvar[cub][width]= sum;
return sum;
 
} // calc_var()
 
 
/**************************************/
void print_ppvar( void ) {
 
int i, j;
 
printf( "   " );
for ( j= 0; j<=max_cub; j++ ) { printf( " %3d", j ); }
printf( "\n" );
 
for ( i= 0; i<=max_cub; i++ ) {
    printf( "%2d:", i );
    for ( j= 0; j<=max_cub; j++ ) { printf( " %3d", ppvar[i][j] ); }
    printf( "\n" );
}
 
} // print_ppvar()
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
22.08.2009, 22:35
Пример вывода программы.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
> v2.exe 10
      0   1   2   3   4   5   6   7   8   9  10
 0:   1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1
 1:   0   1  -1  -1  -1  -1  -1  -1  -1  -1  -1
 2:   0   0   1  -1  -1  -1  -1  -1  -1  -1  -1
 3:   0   0   1   2  -1  -1  -1  -1  -1  -1  -1
 4:   0   0   0   1   2  -1  -1  -1  -1  -1  -1
 5:   0   0   0   1   2   3  -1  -1  -1  -1  -1
 6:   0   0   0   1   2   3   4  -1  -1  -1  -1
 7:   0   0   0   0   2   3   4   5  -1  -1  -1
 8:   0   0   0   0   1   3   4   5   6  -1  -1
 9:   0   0   0   0   1   3   5   6   7   8  -1
10:   0   0   0   0   1   3   5   7   8   9  10
 
n     0   1   2   3   4   5   6   7   8   9  10
var   1   1   1   2   2   3   4   5   6   8  10
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
22.08.2009, 22:37
Первая таблица - это результат функции get_var( cub, width ), где cub - число кубов, которое нужно уложить, width - ограничение на ширину самого нижнего слоя.
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
22.08.2009, 22:44
Code
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
> v2.exe 20
      0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20
 0:   1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1
 1:   0   1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1
 2:   0   0   1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1
 3:   0   0   1   2  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1
 4:   0   0   0   1   2  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1
 5:   0   0   0   1   2   3  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1
 6:   0   0   0   1   2   3   4  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1
 7:   0   0   0   0   2   3   4   5  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1
 8:   0   0   0   0   1   3   4   5   6  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1
 9:   0   0   0   0   1   3   5   6   7   8  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1
10:   0   0   0   0   1   3   5   7   8   9  10  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1
11:   0   0   0   0   0   2   5   7   9  10  11  12  -1  -1  -1  -1  -1  -1  -1  -1  -1
12:   0   0   0   0   0   2   5   8  10  12  13  14  15  -1  -1  -1  -1  -1  -1  -1  -1
13:   0   0   0   0   0   1   4   8  11  13  15  16  17  18  -1  -1  -1  -1  -1  -1  -1
14:   0   0   0   0   0   1   4   8  12  15  17  19  20  21  22  -1  -1  -1  -1  -1  -1
15:   0   0   0   0   0   1   4   8  13  17  20  22  24  25  26  27  -1  -1  -1  -1  -1
16:   0   0   0   0   0   0   3   8  13  18  22  25  27  29  30  31  32  -1  -1  -1  -1
17:   0   0   0   0   0   0   2   7  13  19  24  28  31  33  35  36  37  38  -1  -1  -1
18:   0   0   0   0   0   0   2   7  14  21  27  32  36  39  41  43  44  45  46  -1  -1
19:   0   0   0   0   0   0   1   6  13  21  29  35  40  44  47  49  51  52  53  54  -1
20:   0   0   0   0   0   0   1   5  13  22  31  39  45  50  54  57  59  61  62  63  64
 
n     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20
var   1   1   1   2   2   3   4   5   6   8  10  12  15  18  22  27  32  38  46  54  64
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
22.08.2009, 23:50
Цитата Сообщение от odip Посмотреть сообщение
Пример вывода программы.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
> v2.exe 10
      0   1   2   3   4   5   6   7   8   9  10
 0:   1  -1  -1  -1  -1  -1  -1  -1  -1  -1  -1
 1:   0   1  -1  -1  -1  -1  -1  -1  -1  -1  -1
 2:   0   0   1  -1  -1  -1  -1  -1  -1  -1  -1
 3:   0   0   1   2  -1  -1  -1  -1  -1  -1  -1
 4:   0   0   0   1   2  -1  -1  -1  -1  -1  -1
 5:   0   0   0   1   2   3  -1  -1  -1  -1  -1
 6:   0   0   0   1   2   3   4  -1  -1  -1  -1
 7:   0   0   0   0   2   3   4   5  -1  -1  -1
 8:   0   0   0   0   1   3   4   5   6  -1  -1
 9:   0   0   0   0   1   3   5   6   7   8  -1
10:   0   0   0   0   1   3   5   7   8   9  10
 
n     0   1   2   3   4   5   6   7   8   9  10
var   1   1   1   2   2   3   4   5   6   8  10
вывод желательно делать таким, чтобы он легко мог быть прочитан человекоподобными. лень убивает гениальность.
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
23.08.2009, 13:50
2novi4ok: если тебе трудно понять что написано - ты так и скажи что тебе именно неясно.
А вывод просто компактен.
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
23.08.2009, 17:23
почему, например, из нуля кубиков получается один вариант? как говорил король лир: "из ничего и выйдет ничего"(с)
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
23.08.2009, 22:48
Король Лир - это из совсем другой оперы.

Исходя из математики уложить 0 кубиков в 0 мест ( и вообще в любое число мест ) можно ровно одним способом.

Другая проверка - через составленную рекурсивную формулу.
Уложить 1 кубик в ширину 1 можно ровно 1 способом - это очевидно.
В тоже время пользуясь рекурсивной функцией что нужно сделать чтобы уложить 1 кубик ?
Нужно положить 1 кубик в нижнем ряду, а потом подсчитать сколько раз 1-1 кубик ляжет на ширину 1-1,
то есть сколько раз 0 кубиков лягут на поле ширины 0.
Если принять что значение 0, то получим ошибку в граничных значениях.
А если принять что 0 кубиков кладутся 1 способом, то и форумула оказывается верна и тут.
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
26.08.2009, 17:17
odip reshil kazhdyj den' sostavljat' svoj obed iz menu, soderzhashego 0 blud (vsjo kakoje-to raznoobrazije)
0
47 / 47 / 3
Регистрация: 07.01.2009
Сообщений: 297
26.08.2009, 18:51
динамическое программирование,коротко говоря, что-то подобное индукции,в этом алгоритме нужно каждый шаг просчитывать наперед
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.08.2009, 18:51

Динамическое программирование
Добрый вечер. Мне задали написать задачи на динамическое программирование, но нам ничего не объясняли, поэтому обращаюсь к профессионалам....

Динамическое программирование
Нужно составить рекурентную формулу для нахождения значения последней вершины Дан ломаная, состоящая из n вершин (3 ≤ n ≤ 50). Для...

Динамическое программирование
Добрый день! Возникла проблема в решении задач динамическим программированием Задача представлена в виде системы И для её решения...

задача динамическое программирование
В город N приехал цирк с комндой атлетов. Они хотят удивить горожан города N -- выстроить из своих тел башню максимальной высоты. Башня --...

Динамическое программирование - задача
Добрый вечер! На днях попалась такая задача: Миша записывает 2 числа: n и m, а Маша должна разделить число n на m частей, не меняя...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru