Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 13

Динамическое программирование

24.02.2016, 10:21. Показов 4007. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Во время трансляции концерта предприниматель решил сделать бизнес на производстве кассет. Он имеет M кассет с длительностью звучания D каждая и хочет записать на них максимальное число песен. Эти песни (их общее количество N) передаются в порядке 1, 2, …, N и имеют заранее известные ему длительности звучания L1, L2, …, LN. Предприниматель, прослушивая по порядку песни, может выполнять одно из следующих действий:

если песня на текущую кассету помещается, то он может записать ее на кассету или пропустить песню;
если песня на кассету не помещается, то он может пропустить песню или начать ее записывать на новую кассету (при этом старая кассета откладывается и туда уже ничего не может быть записано).
Необходимо определить максимальное количество песен C, которые предприниматель может записать на кассеты.

Входные данные
Входные данные содержатся в файле input.txt.

В первой строке файла находятся числа N, M и D (все числа натуральные 1 ≤ N ≤ 200, 1 ≤ M ≤ 50, 1 ≤ D ≤ 1000).
Во второй строке, находятся натуральные числа L1, L2, …, LN, разделенные пробелом (1 ≤ Li ≤ 1000).
Выходные данные
Выходные данные находятся в файле output.txt, который в первой строке содержит максимальное количество песен C, которые предприниматель может записать на кассеты.

Пример
input.txt
3 2 4
1 4 1
output.txt
2

Вроде написал свое решение, но оно работает некорректно. К примеру на тесте:
8 4 6
4 2 4 2 6 6 4 2 (Выдает ответ 4, что является неверным)
А на примере :
8 4 6
4 2 4 2 5 5 4 2(тут Выдает уже ответ 7, что является верным)
Не могу понять что делаю не так, в случае когда длина песни равна объему кассеты.
Вот мой код:

Java
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
public class Solution {
     static BufferedReader in;
     static StringTokenizer st;
 
 
 static String next() throws IOException {
  if (st == null || !st.hasMoreTokens()) 
  {
      String line = in.readLine();
      if (line == null)
          return null;
      st = new StringTokenizer(line);
  }
  return st.nextToken();
}
 
 public static void main(String[] args) {
      try {
          boolean tack = false;
       in = new BufferedReader(new FileReader("input.txt"));
       PrintWriter out = new PrintWriter(new FileWriter("output.txt"));
       int n = Integer.parseInt(next());
       int m = Integer.parseInt(next());
       int d = Integer.parseInt(next());
       int[] l = new int[n];
       for (int i = 0; i < n; i++)
          l[i] = Integer.parseInt(next());
       
       int space = 0,next_i = 0,next_j=0,next_k=0;
       int[][][] mas = new int[n + 1][m + 1][d];
       
       for (int i = 0; i < n; i++) 
       {
          for (int j = 0; j < m; j++) 
          {
              for (int k = 0; k < d; k++) 
              {
                  space = l[i];
                  next_i = i + 1;
                  next_j = j;
                  next_k = k + space;
          
                  if (need_space > d)
                      continue;
          
                  if (next_k > d) 
                  {
                      next_j++;
                      next_k = space;
                  }
          
                  if (next_k == d) 
                  {
                      next_j++;
                      next_k = 0;
                  }
          
                  if (next_i > n || next_j > m || next_k >= d)
                      continue;
          
                  if (mas[next_i][next_j][next_k] < mas[i][j][k] + 1)
                      mas[next_i][next_j][next_k] = mas[i][j][k] + 1;
 
              }
          }
       }
       
       int res = 0;
       for (int i = 0; i < n + 1; i++)
          for (int j = 0; j < m + 1; j++)
              for (int k = 0; k < d; k++)
                  res = Math.max(res, mas[i][j][k]);
 
       out.println(res);
       out.close();
      } catch (IOException e) {
       
      }
    }
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.02.2016, 10:21
Ответы с готовыми решениями:

Алгоритм прямой и обратной прогонки (динамическое программирование)
Здравствуйте. Есть задача: Фермер имеет k овец. В конце каждого года он принимает решение, сколько овец продать и сколько оставить....

Динамическое программирование
Нужно вернуть сдачу 10 рублей. Имеется монета 1,2,5 руб. Сколькими способами можно вернуть сдачу? import java.util.*; public class...

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

21
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 13
29.02.2016, 11:15  [ТС]
помощь все еще нужна
0
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
29.02.2016, 11:32
Структура кабздец полный.
8 4 6
4 2 4 2 6 6 4 2 (Выдает ответ 4, что является неверным)
Имеем 8 песен. 4 кассеты, на кассете есть 6 минут, так?

4+2 <= 6. Перваякассета.
4+2 <= 6. Вторая кассета.
6 <= 6. Третья кассета.
6 <= 6. Четвёртая кассета.
2 <= 6. Пятая кассета.
Итого 5 кассет. Так?


А на примере :
8 4 6
4 2 4 2 5 5 4 2
Имеем 8 песен. 4 кассеты, на кассете есть 6 минут, так?
4+2 <= 6. Одна кассета.
4+2 <= 6. Вторая кассета.
5 <= 6. Третья кассета.(Ибо 5+5 больше 6).
5 <= 6. Четвёртая кассета.(Ибо 5+4 больше 6).
4+2 <= 6. Пятая кассета.
Итого 5 кассет, так? От куда у вас тогда 7 кассет и это правильно?
0
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 13
29.02.2016, 12:11  [ТС]
выдавать нужно наибольшее кол-во песен , которые возможно записать, а не кол-во кассет(оно итак известно).

Добавлено через 3 минуты
и на тесте когда 4 2 4 2 6 6 4 2 должно записаться так:
4+2 первая кассета
4+2 вторая кассета
6 третья кассета
одну 6-ку пропускаем
и 4+2 четвертая кассета
0
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
29.02.2016, 12:13
Не понимаю логику, не смогу помочь.
0
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 13
29.02.2016, 12:13  [ТС]
и насчет структуры, если вы знаете как это сделать проще я буду только рад если вы поделитесь идеей.
0
Заблокирован
29.02.2016, 17:47
Цитата Сообщение от Hyskills Посмотреть сообщение
Пример
input.txt
3 2 4
1 4 1
output.txt
2
И? Две кассеты по 4 минуты длительностью звучания запишут все 3 песни (1+1+4). Почему 2 ?. Согласно их же условию, - сначала пропустил, потом записал, потом два раза записал - Автор задания на Вася с 3 школы не?

Добавлено через 7 минут
Наверно так: когда он пропускает песню, то он к ней уже не возвращается, как и к кассете, когда берет новую, но это не написано в условии.

Добавлено через 1 час 4 минуты
Цитата Сообщение от Hyskills Посмотреть сообщение
если вы знаете как это сделать проще я буду только рад если вы поделитесь
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
static void MaxN(int count, int d, int[] musicLength, int cIndex, int restD, int max) {
        if (count == 0) {
            if (musicLength[musicLength.length - 1] < max)
                musicLength[musicLength.length - 1] = max;
            return;
        }
        for (int index = cIndex, rD = restD; index < musicLength.length; index++) {
            if (musicLength[index] <= rD)
                MaxN(count, d, musicLength, index + 1, rD - musicLength[index], max + 1);
            else
                MaxN(count - 1, d, musicLength, index, d, max);
            MaxN(count, d, musicLength, index + 1, rD, max);
        }
    }
    public static void main(final String[] args) {
        int M /*число кассет*/ = 4;
        int D /*длительность звучания */ = 6;
        int N /*Число песен*/ = 8;
        int[] musicLength = {4, 2, 4, 2, 6, 6, 4, 2,/*последний элемент ответ*/ 0};
 
        MaxN(M, D, musicLength, 0, D, 0);
        System.out.println(musicLength[musicLength.length - 1]);
    }
0
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 13
29.02.2016, 18:08  [ТС]
Dsasdf, спасибо, я уже решил эту задачу, правда ваше решение в разы компактнее... не могли бы вы рассказать в чем заключается ваша идея?? в своем алгоритме я разбивал изначальную задачу на 3 подзадачи:
1)Предположим, что длительность звучания последней поступившей песни меньше, чем занятое место на кассете с номером k
2)Длительность последней поступившей песни в точности совпадает с занятым местом на кассете с номером k
3)Длительность последней поступившей песни больше, чем занятое место на кассете с номером k
и относительно их уже решал основную задачу.
В итоге мое решение получилось достаточно объемным и не проходит 1 тест из-за привышения лимита времени(в задаче лимит 1сек на тесты).

Добавлено через 13 минут
ваше решение значительно выигрывает по памяти, однако не прошло 8 из 14 тестов на время(тратит на тестах примерно 2 секунды). И на одном из тестов выдало не тот ответ, т.ч. боюсь без трехмерных массивов тут не обойтись.
0
Заблокирован
29.02.2016, 20:43
Цитата Сообщение от Hyskills Посмотреть сообщение
ваше решение значительно выигрывает по памяти, однако не прошло 8 из 14 тестов на время(тратит на тестах примерно 2 секунды). И на одном из тестов выдало не тот ответ, т.ч. боюсь без трехмерных массивов тут не обойтись.
Да вы еще и врун ) Где тесты ссылку, плз ....

Добавлено через 1 час 5 минут
Ясно. Наврал и сбежал ... ))
0
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 13
29.02.2016, 20:53  [ТС]
Dsasdf, я никуда не сбегал, просто отошел)))) на сайт с моими тестами вы не зайдете , но вот вам сайт с этой же задачей, но тестов там поболее и проходит ваш вариант меньше http://www.e-olymp.com/ru/problems/801

Добавлено через 5 минут
только когда будете загружать туда решение, обратите внимание что там немного в ином порядке расположены данные во входном файле

Добавлено через 2 минуты
И насчет вруна. Смысл мне вам врать? я наоборот заинтересован в помощи с правильным решением этой задачи.
0
Заблокирован
29.02.2016, 21:46
Цитата Сообщение от Hyskills Посмотреть сообщение
и проходит ваш вариант меньше http://www.e-olymp.com/ru/problems/801
Мда ... узнаю учебный дол****изм преподавателей. Как передать и получить данные в программу неясно. Где лежат на сервере входной файл и выходной не ясно.
0
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 13
29.02.2016, 22:15  [ТС]
Dsasdf, Dsasdf, входной файл input.txt , выходной файл otput.txt. Как хранятся данные во входном файле по-моему достаточно понятно там описано. Что хранится во входных данных на сервере не известно, в этом и сложности с поиском ошибки, все делается путём проб и ошибок!
0
Заблокирован
29.02.2016, 22:28
Цитата Сообщение от Hyskills Посмотреть сообщение
Dsasdf, Dsasdf, входной файл input.txt , выходной файл otput.txt. Как хранятся данные во входном файле по-моему достаточно понятно там описано. Что хранится во входных данных на сервере не известно, в этом и сложности с поиском ошибки, все делается путём проб и ошибок!
Все там известно - хранится куча данных до 100 шт.
http://www.e-olymp.com/ru/blogs/posts/7 - без этого чуда, программу никогда не запустить на выполнение. Притом пишут main название класса, а в примере приводят Main.

Работает все правильно - но время выполнения дольше, чем хотят. Но и автор темы форума в первом посте темы ничего не говорил об ограничениях времени.
0
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 13
29.02.2016, 22:33  [ТС]
Dsasdf, там написано, чуть ниже условия задания, лимит по времени и по памяти! если вам интересно ,могу скинуть решение этой задачи, но оно не мое и если честно я не особо понимаю как там что сделано, она написана на c++!

Добавлено через 1 минуту
может вы поймете что там делается и сможете мне объяснить!
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
#include <fstream>
 
using std::ifstream;
using std::ofstream;
 
int n, m, d, *l, c;
 
void inputData( void )
{
    ifstream ifile( "input.txt" );
 
    ifile >> n >> m >> d;
 
    l = new int [n + 1];
 
    for ( int i = 1; i <= n; i++ )
        ifile >> l[i];
 
    ifile.close();
 
    return;
}
 
void outputData( void )
{
    ofstream ofile( "output.txt" );
 
    ofile << c;
 
    ofile.close();
 
    return;
}
 
inline int max( int x, int y )
{
    if ( x >= y )
        return x;
    else
        return y;
}
 
inline int offset( int x, int y )
{
    static int len = m * d;
 
    return ( x * ( len + 1 ) + y );
}
 
void reccAlhorithm( void )
{
    int *rec;
    int i, j;
    int len = m * d;
    int pos;
 
    rec = new int [( len + 1 ) * ( n + 1 )];
 
    for ( i = 0; i < n + 1; i++ )
        rec[offset( i, 0 )] = 0;
 
    for ( j = 0; j < len + 1; j++ )
        rec[offset( 0, j )] = 0;
 
    for ( i = 1; i < n + 1; i++ )
        for ( j = 1; j < len + 1; j++ ) {
            pos = j % d;
            if ( pos == 0 )
                pos = d;
 
            if ( l[i] <= pos )
                rec[offset( i, j )] = max( rec[offset( i - 1, j - l[i] )] + 1,
                                           rec[offset( i - 1, j )] );
            else
                rec[offset( i, j )] = max( rec[offset( i, j - 1 )],
                                           rec[offset( i - 1, j )] );
        }
 
    c = rec[offset( n, len )];
 
    return;
}
 
int main( void )
{
    inputData();
 
    reccAlhorithm();
 
    outputData();
 
    return 0;
}
0
Заблокирован
29.02.2016, 22:41
Цитата Сообщение от Hyskills Посмотреть сообщение
там написано, чуть ниже условия задания
я имел ввиду условие задачи в первом посте этой темы, а не на том сайте, о котором уже после стало известно и об ограничениях.
Не советую разбирать чужой код - лучше пишите свой.
0
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 13
29.02.2016, 22:44  [ТС]
Просто на момент написания темы не возникало проблем со времен, но да, действительно надо бы указать!
0
Заблокирован
02.03.2016, 13:45
Цитата Сообщение от Hyskills Посмотреть сообщение
Просто на момент написания темы не возникало проблем со времен, но да, действительно надо бы указать!
хорошо, когда все условия пишутся сразу

Добавлено через 14 часов 2 минуты
Задача с сайта - http://www.e-olymp.com
Что не так:
1 Условие "задачи" писалось строго под один из численных методов в математике исключая все остальные решения введенными ограничениями. Т.е. если знаешь этот числ. метод - решишь, не знаешь - не решишь. Все сводится на это. А затем выкладывается как "задача для массового решения".
2 В условии умолчали, что "предприниматель" способен прослушать песню только один раз.
3 В рейтинге по потребляемым ресурсам побеждать всегда будет только С и С++, остальные языки несправедливо равняются к ним, потому, что многие языки изначально, ввиду специфики своей работы, потребляют больше, чем вышесказанные - С и С++.

Как решается:
Раскладываются в ряд все кассеты по минутах. Берется песня и делается вывод можно ли ее записать в одну минуту, две, три и т.д.
1 Составляется таблица значений, где число столбцов равно общему числу минут доступных для записи, а число строк равно числу песен.+1+1 - для удобства
2 Если песню можно записать в выделенное время, то, каждый раз, ищется максимум накрест из соседней вверх ячейки и левой, с добавлением единицы к значению левой ячейки. Позиция левой ячейки считается так: верхняя ячейка минус длинна текущей песни, получается верхняя ячейка сдвинутая влево. Результат записывается в текущую ячейку.
3 Если - нет, ищется максимум из накрест лежащих ячеек, одной влево, другой вверх ячеек, без добавления единицы.
4 Повторяется столько раз, сколько песен в таблице, пока не заполнится вся таблица. Согласно доказательству, результат будет всегда в крайней нижней правой ячейке таблицы, т.е. чтобы получить результат надо вычислить полностью всю таблицу.
Вот пример:
yes0 1 10
0(0) 1(0) 2(0) 3(0) 4(0) 5(0) 6(0) 7(0) 8(0)
9(0) 10(1) 11(0) 12(0) 13(0) 14(0) 15(0) 16(0) 17(0)
18(0) 19(0) 20(0) 21(0) 22(0) 23(0) 24(0) 25(0) 26(0)
27(0) 28(0) 29(0) 30(0) 31(0) 32(0) 33(0) 34(0) 35(0)
------
yes1 2 11
0(0) 1(0) 2(0) 3(0) 4(0) 5(0) 6(0) 7(0) 8(0)
9(0) 10(1) 11(1) 12(0) 13(0) 14(0) 15(0) 16(0) 17(0)
18(0) 19(0) 20(0) 21(0) 22(0) 23(0) 24(0) 25(0) 26(0)
27(0) 28(0) 29(0) 30(0) 31(0) 32(0) 33(0) 34(0) 35(0)
------
...
------
no18 10 19
0(0) 1(0) 2(0) 3(0) 4(0) 5(0) 6(0) 7(0) 8(0)
9(0) 10(1) 11(1) 12(1) 13(1) 14(1) 15(1) 16(1) 17(1)
18(0) 19(1) 20(0) 21(0) 22(0) 23(0) 24(0) 25(0) 26(0)
27(0) 28(0) 29(0) 30(0) 31(0) 32(0) 33(0) 34(0) 35(0)
------
no19 11 20
0(0) 1(0) 2(0) 3(0) 4(0) 5(0) 6(0) 7(0) 8(0)
9(0) 10(1) 11(1) 12(1) 13(1) 14(1) 15(1) 16(1) 17(1)
18(0) 19(1) 20(1) 21(0) 22(0) 23(0) 24(0) 25(0) 26(0)
27(0) 28(0) 29(0) 30(0) 31(0) 32(0) 33(0) 34(0) 35(0)
------
no20 12 21
0(0) 1(0) 2(0) 3(0) 4(0) 5(0) 6(0) 7(0) 8(0)
9(0) 10(1) 11(1) 12(1) 13(1) 14(1) 15(1) 16(1) 17(1)
18(0) 19(1) 20(1) 21(1) 22(0) 23(0) 24(0) 25(0) 26(0)
27(0) 28(0) 29(0) 30(0) 31(0) 32(0) 33(0) 34(0) 35(0)
------
yes9 13 22
0(0) 1(0) 2(0) 3(0) 4(0) 5(0) 6(0) 7(0) 8(0)
9(0) 10(1) 11(1) 12(1) 13(1) 14(1) 15(1) 16(1) 17(1)
18(0) 19(1) 20(1) 21(1) 22(1) 23(0) 24(0) 25(0) 26(0)
27(0) 28(0) 29(0) 30(0) 31(0) 32(0) 33(0) 34(0) 35(0)
------
Пример решения:
Java
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
import java.io.*;
import java.util.*;
 
public class Main {
 
    public static void main(String[] args) {
        int N = 0, M = 0, D = 0;
        int[] musicLength = null;
        int[][] table = null;
 
        try (Scanner sc = new Scanner(new File("input.txt"))) {
 
            M = sc.nextInt();
            D = sc.nextInt();
            N = sc.nextInt();
            musicLength = new int[N + 1];
            table = new int[N + 1][M * D + 1];
 
            for (int i = 1; i <= N; i++)
                musicLength[i] = sc.nextInt();
        } catch (FileNotFoundException ex) {
        }
 
        for (int i = 1; i <= N; i++)
            for (int j = 1, val = 1; j <= M * D; j++, val = (val + 1 > D) ? 1 : val + 1)
                if (musicLength[i] <= val)
                    table[i][j] = Math.max(table[i - 1][j], table[i - 1][j - musicLength[i]] + 1);
                else
                    table[i][j] = Math.max(table[i][j - 1], table[i - 1][j]);
 
        try (PrintWriter pw = new PrintWriter(new File("output.txt"))) {
            pw.println(table[N][M * D]);
        } catch (FileNotFoundException ex) {
        }
 
    }
}
0
 Аватар для Aviz__
2739 / 2048 / 507
Регистрация: 17.02.2014
Сообщений: 9,467
02.03.2016, 15:51
Переформулируем задачу:
Есть определенное количество отрезков произвольной длинны. Так же, существует определенное количество одномерных "коробок", в которые отрезки могут укладываться, без промежутков, один за другим. Отрезки подаются в произвольном (или определенном, по длине?) порядке. Причем, длинна "коробок" не меньше, самого длинного отрезка.
Определить, наибольшее количество "коробок", которые будут заполнены, при данном способе подачи отрезков?
Все верно?
0
Заблокирован
02.03.2016, 17:07
Цитата Сообщение от Aviz__ Посмотреть сообщение
Переформулируем задачу:
Есть определенное количество отрезков произвольной длинны. Так же, существует определенное количество одномерных "коробок", в которые отрезки могут укладываться, без промежутков, один за другим. Отрезки подаются в произвольном (или определенном, по длине?) порядке. Причем, длинна "коробок" не меньше, самого длинного отрезка.
Определить, наибольшее количество "коробок", которые будут заполнены, при данном способе подачи отрезков?
Все верно?
Не верно. Отрезки подаются с заданным строгим порядком, в одном направлении, причем, пропускать можно отрезок без возврата к нему снова, коробку можно отбрасывать без возврата к ней снова.
Например:
input.txt
3 2 4
1 4 1
output.txt
2
2, а не 3.
Если бы порядок был не важен, т.е. можно было возвращаться снова к пропущенному отрезку, - то решением задачи была бы группировка по возрастанию, с выбором сначала всех меньших отрезков, затем больших.

Удачи.
0
 Аватар для Aviz__
2739 / 2048 / 507
Регистрация: 17.02.2014
Сообщений: 9,467
02.03.2016, 18:19
Цитата Сообщение от Dsasdf Посмотреть сообщение
Например:
input.txt
3 2 4 -
1 4 1
output.txt
2
Не совсем понятен ваш пример:
3 2 4 - порядок и длина отрезков?
1 4 1 - вместимость коробок?

Цитата Сообщение от Dsasdf Посмотреть сообщение
Отрезки подаются с заданным строгим порядком
каком порядке?
Что без возврата, это понятно

Я понял так:
|3|2|2|4| - это отрезки определенных длин идущих слева на право. Коробки вместимостью 4 длинны стоят на выходе.
Первая коробка заполнится полностью, вторая тоже, но двумя отрезками, третья будет иметь пустое место в одну длину.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.03.2016, 18:19
Помогаю со студенческими работами здесь

Динамическое программирование
Помогите найти длину возрастающей подпоследовательности(не непрерывной) методом ДП на паскале

Динамическое программирование
Помогите пожалуйста решить задачку : По данному натуральному n определите количество последовательностей длины n из 0, 1 и 2, не содержащих...

Динамическое программирование
Помогите решить или приведите подобную задачу с решением

Динамическое программирование
скиньте пожалуйста 2 задачи на тему Динамическое программирование

ДП Динамическое программирование
ограничение времени на тест: 0.5 сек. ограничение памяти на тест: 65536 KB. Рассмотрим все строки длины N, состоящие только из букв...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru