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

Найти наибольший прямоугольник в матрице состоящий из четных чисел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дана матрица. получить массив b, присвоив его k-му элементу значение 1, если строка упорядочена.. http://www.cyberforum.ru/cpp-beginners/thread1075150.html
Дана матрица. получить массив b, присвоив его k-му элементу значение 1, если строка упорядочена по убыванию и 0 - в противном случае. Вот код, проблема в том, что при вводе правильной строки(по...
C++ inline и define Почему использовать inline-функции лучше, чем использовать команду препроцессора #define? Смысл в том, что лучше лишний раз не трогать препроцессор? http://www.cyberforum.ru/cpp-beginners/thread1075149.html
C++ Односвязный список
Всем привет. Помогите разобраться с односвязным списком. Вот собственно и вопросы: 1) Если я правильно понял то список это чтото вроде бесконечного динамического массива? 2) Что бы получить данные...
C++ Почему нет звука?
Ошибок нет, но и звука в колонках нет ... mciSendString(("open sample.mp3 type mpegvideo alias "),NULL,1,NULL); mciSendString(("play sample.mp3"),0,1,NULL) Подключены инклюды и либа...
C++ В игре участвуют двое – А и Б http://www.cyberforum.ru/cpp-beginners/thread1075115.html
В игре участвуют двое – А и Б, каждый по очереди ставит свой символ в строку, причем переписывает все что было написано до него (ААБААБАААБААБАБ…). Определить какой символ стоит на позиции с номером...
C++ Корень Пишу прогу для нахождения Среднее геометрического у меня получается что корень 6 степени. Я так думаю, что sqrt мне не поможет? подробнее

Показать сообщение отдельно
Croessmah
Эксперт CЭксперт С++
13206 / 7477 / 840
Регистрация: 27.09.2012
Сообщений: 18,388
Записей в блоге: 3
Завершенные тесты: 1
25.01.2014, 23:15
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <iostream>
#include <vector>
 
 
 
struct rectangle {
   size_t left ;
   size_t top ;
   size_t right ;
   size_t bottom ;
   rectangle ( size_t left_, size_t top_ , size_t right_, size_t bottom_ ) : left(left_) , top (top_) , right (right_) , bottom(bottom_) {
   }
} ;
 
 
 
size_t square ( const rectangle & rect ) {
   return ( ( rect.right - rect.left ) + 1 ) * ( ( rect.bottom - rect.top ) + 1 ) ;
}
 
 
template < typename T1 , typename T2 >
rectangle gr ( const std::vector < std::vector < T1 > > & matrix, size_t left , size_t top , const T2 & predicate ) {
   rectangle maxRect ( 0 , 0 , 0 , 0 ) ;
   size_t width = 0  ;
   for ( size_t i = top , height = matrix.size() ; i < height ; ++i ) {
      width = width ? width : matrix[i].size() ;
      for ( size_t j = left ; j < matrix[i].size() &&  j < width ; ++j ) {
         if ( !predicate(matrix [i][j]) ) {
            width = j ;
            if ( j == left )
               return maxRect ;
         } else {
            rectangle rect ( left , top , j ,  i  ) ;
            if ( square(rect) > square(maxRect) )
               maxRect = rect ;
         }
      }
   }
   return maxRect ;
}
 
 
template < typename T >
bool isEven ( const T & first ) {
   return !(first & 1) ;
}
 
 
int main ( ) {
   std::vector < std::vector < int > > matrix
   {
         { 2 , 1 , 4 , 5 , 5 } ,
         { 6 , 6 , 8 , 8 , 8 } ,
         { 7 , 4 , 2 , 8 , 6 } ,
         { 2 , 1 , 8 , 1 , 7 } ,
         { 7 , 7 , 7 , 7 , 7 }
   } ;
   rectangle maxRect ( 0 , 0 , 0 , 0 ) ;
   for ( size_t i = 0 , height = matrix.size() ; i < height ; ++i ) {
      for ( size_t j = 0 , width = matrix[i].size() ; j < width ; ++j ) {
         rectangle rect ( gr ( matrix , j , i , isEven<int> ) ) ;
         if ( square(rect) > square(maxRect) )
            maxRect = rect ;
      }
   }
   std::cout << "( " << maxRect.left << " , " << maxRect.top << " ) - ( " << maxRect.right << " , " << maxRect.bottom << " ) : " << square(maxRect) <<std::endl ;
}
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru