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

Динамическое программирование. Таблица. Набор букв на мобильнике - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Из заданной числовой последовательности выделить монотонно неубывающую подпоследовательность максимально возможной длины http://www.cyberforum.ru/cpp-beginners/thread229499.html
Привет вам, умный народ! Вынужден обратиться к вам за помощью, ибо прижало! Проблема у меня с динамическим программированием, а большинству из вас это плевое дело) Из заданной числовой последовательности выделить монотонно неубывающую подпоследовательность максимально возможной длины. Если таких несколько, то из них нужно выбрать ту, у которой наибольшая сумма чисел. Вход-выход -...
C++ Графика(нарисовать паркет) Кто нибудь может скинуть графику на си или паскале, вида "паркет" http://www.cyberforum.ru/cpp-beginners/thread229498.html
C++ Как смонтирована файловая система?
Здравствуйте. Подскажите,пожалуйста, как в Solaris'e узнать как смонтирована файловая система? Я знаю,что можно использовать mount без аргументов, но тогда говорится,что такая команда не существует.
Задание по строкам! C++
Удалить из заданной строки все группы символов, расположенные между круглыми скобками, включая сами скобки.
C++ Чтение структуры из файла http://www.cyberforum.ru/cpp-beginners/thread229448.html
мне надо считать структуру из файла и вывести данные на экран. считывать-то считывает.. но вот выводит ерунду какую-то. помогите разобраться(( данные в файле (.txt): 1 Avtor1 Nazv1 izd-vo1 1111 111 11.1 2 Avtor2 Nazv2 izd-vo2 2222 222 22.2 3 Avtor3 Nazv3 izd-vo3 3333 333 33.3 4 Avtor4 Nazv4 izd-vo4 4444 444 44.4 5 ...
C++ 2 программы, не знаю как написать( 1) Вычислить Z=(S1+S2)/2 , где S1-сумма положительных элементов массива X, а S2- сумма отрицательных элементов массива A. Суммы вычислять в одной функции. Функции ввода и вывода массивов описывать отдельно, не объединяя с обработкой данных. 2)В матрице A(m,n), состоящей из нулей и единиц, найти квадрат наибольшего размера(квадратную подматрицу), состоящий целиком из нулей. подробнее

Показать сообщение отдельно
Adriano_Che
0 / 0 / 0
Регистрация: 16.01.2011
Сообщений: 6
16.01.2011, 13:04     Динамическое программирование. Таблица. Набор букв на мобильнике
Всем доброго времени суток! Очень очень нужна помощь в решении двух задач динамическим программированием:
1. Прямоугольная таблица имеет М строк и N столбцов. В каждой ее клетке записано натуральное число не больше 200. Нужно пройти из левого верхнего угла таблицы в правый нижний, на каждом шаге перемещаясь на 1 клетку вправо или вниз. Очевидно, таких путей много, и для каждого можно найти сумму чисел в пройденных клетках. Ясно, что среди этих сумм есть максимальная.
"Хорошими" считаются не только пути с максимально возможной суммой, но и пути, сумма которых отличается от максимальной не более чем на К. Количество "хороших" путей гарантированно не больше 10.
Найти максимально возможную сумму и количество "хороших" путей.

Вход. Первая строка входного текста содержит три целых числа М (2<М<200), N (2<N<200) и K (0<K<200). Каждая из следующих М строк задает N чисел в соответствующих клетках.
Выход. Первая строка текста должна содержать максимально возможную сумму, вторая — количество маршрутов, сумма чисел которых отличается от максимальной не более чем на K.

2.Существует следующий способ набора букв на мобильном телефоне. Клавише 2 сопоставлены буквы abc, клавише 3 def и т.д. При наборе текста одно нажатие на клавишу 2 порождает символ а, два подряд нажатия символ b, три подряд символ c; аналогично, одно нажатие на 3 порождает d, два подряд е и т.д. Если же нужно набрать две буквы а, то нажимают на 2, немного ждут и снова нажимают на 2.
Обобщим ситуацию. Пусть есть алфавит из N символов, который нужно сопоставить М клавишам (M<N). Для каждого символа алфавита известна частота его использования. Нужно задать соответствие символов алфавита клавишам так, чтобы символы с первого по некоторый к1-й соответствовали первой клавише, с (к1+1)-го по некоторый к2-й второй клавише и т.д., а среднее количество нажатий на клавиши (исходя из известных частот) было минимальным. Формально говоря, нужно минимизировать характеристику (сумма по i от 1 до N от (Fi*Ti)) , где Fi частота использования i-го символа согласно входным данным, Ti количество нажатий, нужное для набора i-го символа согласно построенному разбиению алфавита.

Вход. В первой строке текста записаны N и M, в следующих N строках — по одному целому числу, пропорциональному частоте использования символа (2<М≤100, М<N≤250).
Выход. Первая строка текста должна содержать найденную минимальную характеристику, а каждая из следующих М строк два числа (между ними пробел), которые задают диапазон символов, сопоставленных данной клавише.

Добавлено через 1 час 19 минут
Что касается задачи про числа-я нашёл максимальную сумму. Я не могу понять как найти "хороший" путь(( Вот код для нахождения максимального пути:
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
#include<iostream>
#include<stdio.h>
#include<conio.h>
using namespace std;
int main()
{
        int N, M, i, j, **a, **b;
        cin>>N>>M;
        a=new int*[M];
        b=new int*[M];
        for(i=0; i<M; i++)
        {
                a[i]=new int[N];
                b[i]=new int[N];
                for(j=0; j<N; j++)
                {
                        cin>>a[i][j];
                        b[i][j]=a[i][j];
                }
        }
        for (i=N-2;i>=0;i--)
            b[M-1][i]+=b[M-1][i+1];
        for(i=M-2; i>=0; i--)
        for(j=N-1; j>=0; j--)
        {
                int max=b[i+1][j];
                if(j<(N-1) && (b[i][j+1]>max))
                        max=b[i][j+1];
                b[i][j]+=max;
        }
        cout<<"max="<<b[0][0]<<endl;
        system("PAUSE");
        return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru