Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- #define SIZE 100
- int main(){
- int A[SIZE][SIZE] = {};
- int sum = 0;
- int N = 0;
- int M = 0;
- int max = 0;
- bool flag = 0;
- int ans = 0;
- int max_i = 0;
- int elem = 0;
- int elem_i[SIZE] = {};
- int elem_j[SIZE] = {};
- int elem_count = 0;
- std::cout << "Введите количество строк матрицы" << std::endl;
- std::cin >> N;
- std::cout << "Введите количество столбцов матрицы" << std::endl;
- std::cin >> M;
- std::cout << "Введите матрицу" << std::endl;
- for( int i = 0; i < N; i++ )
- for( int j = 0; j < M; j++ )
- std::cin >> A[i][j];
- //Здесь мы проходимся по столбцам и ищем всех, кто по 1-му условию подозит
- for( int j = 0; j < M; j++ ){
- max = A[0][j];
- max_i = 0;
- // Ну для начала он дожен быть максимальным в столбце здесь я это проверяю
- for( int i = 0; i < N; i++ ){
- if ( A[i][j] > max ){
- max = A[i][j];
- max_i = i; // cохраним его место
- }
- }
- // Считаем сумму столбца
- sum = 0;
- for( int i = 0; i < N; i++ ){
- sum += A[i][j];
- }
- sum -= max; // Вычитаем наш максимальный элемент получается сумма остальных
- if( max > sum ){ // Если 1-е условие выполняется
- elem_i[elem_count] = max_i; // запоминаем координаты
- elem_j[elem_count] = j;
- elem_count += 1; // Количество + 1
- }
- }
- // Ну теперь давай проверять 2-е условие
- for( int i = 0; i < elem_count; i++ ){
- flag = true;
- int elem = A[elem_i[i]][elem_j[i]]; // берём элеметн по индексу
- for( int j = 0; j < elem_j[i]; j ++ )
- if ( A[elem_i[i]][j] >= elem ) // Проверяем всех кто слева
- flag = false; // Если оказался >= то сбрасываем флажок
- for( int j = elem_j[i]+1; j < M; j++ ) // Проверяем всех кто справа
- if ( A[elem_i[i]][j] <= elem ) // Проверяем всех кто слева
- flag = false; // Наоборот, если оказался <= то сбрасываем флажок
- if ( flag ) // Если флажок не сброженный
- ans ++; // то елемент прошёл 2 условия, количество + 1
- //std::cout << elem_i[i] << ' ' << elem_j[i] << ' ' << A[elem_i[i]][elem_j[i]] << ' ' << flag << std::endl; // это вывод координат значений и флагов тупа для теста
- }
- std::cout << "Особых элементов " << ans << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement