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

Площадь наибольшего из прямоугольников матрицы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ пжл решити пример про массив.или памагите http://www.cyberforum.ru/cpp-beginners/thread42542.html
помогите пожалуйста решить задачу про массив. одномерно массиве, состоящем из n целочисленных элементов, вычислить:1)минимальный по модулю элемент массива 2)сумму модулей элементов массива, расположенных после первого отрицательного элемента. Сжать массив удалив из него все элементы, величина которых находится в инвентаре . Освободившийся в конце массива элементы заполнить нулями.
C++ заполнить массив по кругу Нужно заполнить двумерный массив по кругу против часовой стрелки по строкам (последовательностью натуральных чисел), начиная с последнего элемента http://www.cyberforum.ru/cpp-beginners/thread42539.html
Где скачать консолные С++? C++
Где скачать консолные С++?
C++ окошки
Проблема есть небольшая.Я не хнаю как создавать и работать c виндовскими окнами. напишите только с объяснениями.
C++ Возможность передать при помощи определения #define двух численных значений через запятую? http://www.cyberforum.ru/cpp-beginners/thread42490.html
//------------------------------------ примерный вид кода ----------------- // определение дефайном типа #define RECEIVE(first, second) (first*4+second*5) #define A 3,4 void main() { RECEIVE(A); } //-------------------------------------------------------------------
C++ работа с файлами В каждом слове текста k-ю букву заменить заданным символом. Ес-ли k больше длины слова, корректировку не выполнять Текст берётся из файла. Ка ксделать используя библиотеку fstream знаю, но надо сделать без неё то есть простые fread, fwrite и т.д.). Помогите плиз... подробнее

Показать сообщение отдельно
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
30.06.2009, 21:34     Площадь наибольшего из прямоугольников матрицы
Ну, допустим, мы будем считать, для начала, по столбцам. Иду по первой строке до первого нолика. Это элемент a[0][1]. Потом по столбику вниз иду до единицы, считая элементы. Отлично. Высота прямоугольника мне уже известна. Она равна трем. Теперь, иду в следующий столбик [2] и от элемента a[0][2] также вниз до первой единицы или до того, как высота будет равна трем (мы же ее нашли на предыдущем шаге). таким, образом мы остановились на элементе a[2][2]. Дальше идем в следующий столбик, но там a[0][3] стоит единица. Значит, с первым прямоугольником у нас закончено.
И так далее для остальных столбцов. Может, есть способ удобнее, я пока не придумал )

Забыл указать. Если у тебя единичка встретится, раньше, чем ты отсчитаешь 3 нуля, например, вторым элементом, то этот прямоугольник тебе нужно будет досчитать уже по самой короткой стороне. По сути тебе нужно хранить в переменных только самую короткую высоту, что ты нашла и то, сколько столбцов ты прошла, и индекс строки, с которой ты считаешь. Плюс надо помнить, что прямоугольник может начинаться не только со строки, с которой ты начинаешь считать, но и с любого места меньше найденной тобою высоты.
Этот алгоритм легко реализовать.
 
Текущее время: 15:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru