Номер последней из строк матрицы, содержащих максимальное количество одинаковых элементов - C (СИ)
Формулировка задачи:
Привет, прошу помочь.
Дана целочисленная матрица размера. Найти номер последней из ее строк, содержащих максимальное количество одинаковых элементов.
Решение задачи: «Номер последней из строк матрицы, содержащих максимальное количество одинаковых элементов»
textual
Листинг программы
#include <stdio.h>
#define N 4
#define M 4
int main(void)
{
int d=0,c=1,cc=1,k,i=0,j=0,vcc=1;
int A[N][M]={{5,5,5,5},{3,3,3,6},{2,8,2,9},{8,6,6,6}};
for(i=0;i<N;i++){
for(j=0;j<M-1;j++){
for(k=M;k>j;k--){
if(A[i][k]==A[i][j])
c++;
}
if(c>cc)cc=c;
c=1;
}
if(cc==vcc || cc>vcc)d=i;
if(vcc<cc)vcc=cc;
cc=1;
}
printf("%d\n",d+1);
return 0;
}
Объяснение кода листинга программы
- Включаем файл stdio.h для работы с выводом данных на экран
- Задаем значения N и M, которые определяют размерность матрицы A
- Инициализируем первые строки матрицы A значениями 5, 3, 2 и 8
- Объявляем переменные i, j, k, c, cc, d, vcc и присваиваем им значения 0, 0, 0, 1, 1, 0, 0
- Запускаем два вложенных цикла для прохода по всем элементам матрицы A
- Внутренний цикл j выполняет поиск строки с максимальным количеством одинаковых элементов
- Если найденное количество элементов (c) больше, чем текущее максимальное значение (cc), то обновляем cc
- После внутреннего цикла, обновляем c до 1
- Внешний цикл i выполняет поиск строки с максимальным количеством одинаковых элементов
- Если значение cc больше или равно текущему значению vcc, то обновляем d на значение i
- Если значение vcc меньше cc, то обновляем vcc на значение cc
- После внешнего цикла, выводим на экран значение d+1, которое является номером строки с максимальным количеством одинаковых элементов
- Возвращаем 0, чтобы указать, что программа успешно завершилась