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

рекурсивная функция - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить среднее арифметическое элементов, расположенных в вещественном массиве до первого и после последнего нулевых значений. Поменять местами перв http://www.cyberforum.ru/cpp-beginners/thread555296.html
Вычислить среднее арифметическое элементов, расположенных в вещественном массиве до первого и после последнего нулевых значений. Поменять местами первый и максимальный элементы, последний и...
C++ Даны текстовые файлы.. [CPPпомогите пожалуйста кто чем может...уду очень приезнатеельна C+-+Даны текстовые файлы f1 и f2. Переписать с сохранением порядка следования компоненты файла f1 в файл f2, а компоненты файла f2... http://www.cyberforum.ru/cpp-beginners/thread555291.html
C++ Преобразования абстрактного типа при вычислении выражений (переопределение операций)
Добрый день! В процессе изучения С++ столкнулся с нетривиальной трудностью, которую сам для себя никак не могу объяснить. Пусть есть прообраз некоторого типа данных для математических вычислений....
C++ В матрице определить произведение суммы индексов двух максимальных элементов
в двумерном массиве определить произведение суммы индексов двух максимальных элементов главной диагонали а также расположить элементы второго столбца в порядке убывания
C++ Сравнение 2х числовых массивов и генерация 3го http://www.cyberforum.ru/cpp-beginners/thread555261.html
Собственно задание таково: создать два числовых массива, сравнить их и элементы массива m2, которые отсутствуют в массиве m1 записать в массив m3. Вот что написал я: #include <stdio.h> #include...
C++ Задача на тексты. Зашифруйте текст, записанный с помощью русских букв и знаков препинания, заменив каждую букву непосредственно следующей за ней по алфавиту. Расшифруйте текст. подробнее

Показать сообщение отдельно
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
22.04.2012, 19:40
вот тут точно попробуй динамическое программирование.
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
#include <stdio.h>
#include <stdlib.h>
void Way(int* , int* , int , int );
///////////////////////////////////////////
int solve(int* p, int N, int target=100){
int i, j;
int **a=(int**)malloc(N*sizeof(int*));
a[0]=(int*)calloc(N*target*sizeof(int));
for (i=0; i<N; i++) a[i]=a[0]+i*target;
////////////////////////////////////////////
 
for(i=1; i<N; i++)
for(j=0; j<target; j++)
if (j-p[i]>=0) a[i-1][j]=max(a[i-1][j], a[i-1][j-p[i]]+p[i]);
else a[i][j]=a[i-1][j];
 
////////////////////////////////////////////
Way(p, a, );
////////////////////////////////////////////
free(a[0]);
free(a);
 
}
 
///////////////////////////////////////
void Way(int* p, int* a, int i, int j){
if ((i==0)&&(a[i][j]==0)) return;
if (i==1){
  Way(i, j-P[i]);
  printf("%d ", p[i]);
}
else{
  if (a[i][j]!=a[i-1][j]){
    Way(i, j-P[i]);
    printf("%d ", p[i]);
   }
   else way(i-1, j);
}
 
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru