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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
blacckrose9865
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 18
#1

Динамическое программирование! - C++

04.06.2013, 17:54. Просмотров 484. Ответов 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
#include <cstdio>
#include <algorithm>
 
using namespace std;
 
int a[30][30], n, m;
 
int main()
{
    scanf(" %d %d", &n, &m);
/*---------------------------------------------------------------------------------------------------------*/
    for(int i = 0; i < n; i++)
        for(int j = 0; j < m; j++)
            scanf(" %d", &a[i][j]);
    for(int i = 1; i < m; i++)
        a[0][i] += a[0][i - 1];
    for(int i = 1; i < n; i++)
        a[i][0] += a[i - 1][0]; 
    for(int i = 1; i < n; i++)
        for(int j = 1; j < m; j++)
            a[i][j] += min(a[i - 1][j], a[i][j - 1]);
/*---------------------------------------------------------------------------------------------------------*/
    printf("%d", a[n - 1][m - 1]);
    system ("pause");
    return 0;
}
ребята, можете объяснить пожалуйста, что циклы делают в этой программе?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2013, 17:54     Динамическое программирование!
Посмотрите здесь:

Динамическое программирование. Рыцарь. - C++
Необходимо написать три версии алгоритма для решения предложенной задачи. • неэффективная, при помоши рекуррентного спуска. • с...

Кубики, динамическое программирование - C++
Здраствуйте! Есть задача ( на украинском) Незважаючи на те, що Петрик П’яточкін ходить до школи, він все ще продовжує...

Задача на динамическое программирование. - C++
Что не правильно? #include &lt;fstream&gt; #include &lt;iostream&gt; using namespace std; int main() {

Метод динамическое программирование - C++
Помогите пожалуйста с задачей.Дано натуральное число N, не превосходящее 1000. За один ход разрешается поделить его на 2 или на 3 (если...

Задача на динамическое программирование - C++
Требуется решить задачу на динамическое программирование. Условия:На планете Олимпия очень популярна такая головоломка. На столе...

Динамическое программирование.Удаление строки - C++
Дана строка S, состоящая из n маленьких латинских букв. За один ход Вам разрешается удалить один или несколько подряд идущих одинаковых...

Динамическое программирование, поиск маршрута - C++
Возможно ли организовать поиск пути с препятствием, используя динамическое программирование? Т.е. что то типа лабиринта.

динамическое программирование (Ship routes) - C++
Задача на динамическое программирование: Римский турист отправился в плавание по Средиземному морю. Он прибыл в один из городов 3...

Рекуррентные соотношения и динамическое программирование - C++
Приветствую, Форумчане! Есть задача, которую нужно решить используя динамическое программирование. Формулировка задачи: Есть...

Динамическое программирование. Вложенные коробки. - C++
Необходимо написать три версии алгоритма для решения предложенной задачи. • неэффективная, при помоши рекуррентного спуска. • с...

Динамическое программирование: Мышка и зернышки - C++
Задача с сайта e-olymp, номер 15: Мышка и зернышки В индийском храме пол прямоугольной формы выложен одинаковыми квадратными...

Задача о НОП (динамическое программирование) - C++
Здравствуйте!!! Мне нужно решить задачу о нахождении наибольшей общей подстроки. Поискал в интернете, нашёл такой код на Pascal: var...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
04.06.2013, 18:02     Динамическое программирование! #2
Цитата Сообщение от blacckrose9865 Посмотреть сообщение
C++
1
2
3
for(int i = 0; i < n; i++)
* * * * for(int j = 0; j < m; j++)
* * * * * * scanf(" %d", &a[i][j]);
ввод массива


Цитата Сообщение от blacckrose9865 Посмотреть сообщение
C++
1
2
for(int i = 1; i < m; i++)
* * * * a[0][i] += a[0][i - 1];
забивает первую строку матрицы с 1-го(если считать с нуля) элемента по правилу данный = данный+предыдущей

Цитата Сообщение от blacckrose9865 Посмотреть сообщение
C++
1
2
for(int i = 1; i < n; i++)
* * * * a[i][0] += a[i - 1][0];
тоже самое, но со столбиком №0


Цитата Сообщение от blacckrose9865 Посмотреть сообщение
C++
1
2
3
for(int i = 1; i < n; i++)
* * * * for(int j = 1; j < m; j++)
* * * * * * a[i][j] += min(a[i - 1][j], a[i][j - 1]);
изменяются все значения,кроме столба и строки №0 по правилу данный = минимальный из выбранных элементов
вроде всё
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru