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

Динамическое программирование. Разбиение абзаца на строки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ подскажите с заданием http://www.cyberforum.ru/cpp-beginners/thread892329.html
подскажите как правильно мне сделать задание.
C++ Оброботка одномерных массивов (Вычислить m значений функции f(x) на отрезке [a, b], найти элементы, среднее значение) Составить программу решения поставленной задачи: 1. Вычислить m значений функции f(x) на отрезке . Вычисление величины f(x) с оформить в виде функции. Аргументы и значения функций сохранить в отдельных массивах. 2. В массиве значений найти минимальный и максимальный элементы. 3. Найти среднее значение элементов массива значений функции, и подсчитать количество элементов больших среднего... http://www.cyberforum.ru/cpp-beginners/thread892324.html
C++ cin
есть переменная a типа инт! cin>>a; как сделать чтобы при нажатии энтера. переменной присваивалось какое либо значение?
getch() забирает вводимый элемент C++
нужно что бы вводились данные, пока пользователь не отменит ввод клавишей ESC делаю так, но тогда первая вводимая цифра числа уходит в getch.как решить эту проблему? int value; vector <int> test; while (!(getch() == 27)) { cin>>value; test.push_back(value);
C++ Создать класс MyString http://www.cyberforum.ru/cpp-beginners/thread892307.html
Ребята спайсайте Сессия до экзамена осталось 12 часов!!! Отблагодарю материально если все правильно решите, в долгу не останусь! Сразу говорю ничего уточнить и пояснить не могу ничего не знаю по с++ вообще Сама задача: Создать класс MyString, содержащий элемент данных указатель на массив типа char - текстовую строку. Конструктор класса с параметром (максимальной длиной строки) должен...
C++ Создать два класса: PointXY с данными x, y (точка на плоскости в декартовых координатах) и PointPolar с данными r, phi (точка на плоскости в полярных Создать два класса: PointXY с данными x, y (точка на плоскости в декартовых координатах) и PointPolar с данными r, phi (точка на плоскости в полярных координатах). Конструкторы классов с двумя параметрами должны инициализировать значения точек. Переопределить для классов операции преобразования типов: декартовых координат в полярные и наоборот. Переопределить для класса PointXY операцию * как... подробнее

Показать сообщение отдельно
roanna
 Аватар для roanna
16 / 16 / 2
Регистрация: 11.11.2010
Сообщений: 88
09.06.2013, 15:29  [ТС]     Динамическое программирование. Разбиение абзаца на строки
Вот нахождение минимальной высоты абзаца:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void Ex_803::Paragraph()
{
   for(int i = 1; i <= N; i++)
   {
      int k = i - 1;
      int nMax_h = h[i];
      int nSumOfWeigth = w[i];
      int nMin = T[k] + h[i];
 
      while(k >= 0 && nSumOfWeigth <= TW)
      {
         if(h[k] > nMax_h)
            nMax_h = h[k];
         if((nMax_h + T[k]) < nMin)
            nMin = nMax_h + T[k];
         nSumOfWeigth += w[k--];
      } // while
      m_aOptimal[i] = k+1;
      T[i] = nMin;
   } // for
} // Paragraph
А вот лобовая реализация разбития строк:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
   int aLine[5001]; // number of blocks for each i line
   int nLC; // number of lines
   
   nLC=1;
   for(int i = 1; i <= N; i++)
   {
      if(T[i] == h[i] && T[i] != T[i-1])
         aLine[nLC]++;
      else
      {
         if(T[i] == T[i-1])
            aLine[nLC] ++;
         else if(T[i] == h[i]+T[i-1])
            aLine[++nLC]++;
         else
         {
            nLC++;
            aLine[nLC] = i - m_aOptimal[i];
            aLine[nLC-1] = aLine[nLC-1] - aLine[nLC] +1;
         }
      }
   }
Следующие тесты программа проходит, но так как это задача олимпиадная, решение последующих (неизвестных мне вариантов) тестов неверное. E-olimp выдает ошибки связанные с тем, что моя программа выдает или слишком мало, или слишком много данных. Если ни у кого нет идей и желания помочь мне с алгоритмом, буду очень признательна, если вы поможете мне с тестированием.
HTML5
1
2
3
4
5
6
7
8
  INPUT     OUTPUT
  7 6         5
  3 1         3
  2 1         2
  3 3         3
  1 1         1
  3 3
  3 1
HTML5
1
2
3
4
5
  INPUT     OUTPUT
  2 3         7
  1 2         2
  1 4         1
  1 5         2
 
Текущее время: 22:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru