Упражнения C: Найти строку с максимальным числом 1 с
C Array: Упражнение-60 с раствором.
Напишите программу на C, чтобы найти строку с максимальным числом 1 с.
Иллюстрированная презентация:Пример решения:
Код C:
#include <stdio.h>
#define R 5
#define C 5
int getFirstOccur(int arr1[], int l, int h)
{
if(h >= l)
{
int mid = l + (h - l)/2;
if ( ( mid == 0 || arr1[mid-1] == 0) && arr1[mid] == 1)
return mid;
else if (arr1[mid] == 0)
return getFirstOccur(arr1, (mid + 1), h);
else
return getFirstOccur(arr1, l, (mid -1));
}
return -1;
}
int findRowMaxOne(int arr2d[R][C])
{
int max_row_index = 0, max = -1;
int i, index;
for (i = 0; i < R; i++)
{
index = getFirstOccur (arr2d[i], 0, C-1);
if (index != -1 && C-index > max)
{
max = C - index;
max_row_index = i;
}
}
return max_row_index;
}
int main()
{
int arr2d[R][C] = { {0, 1, 0, 1,1},
{1, 1, 1, 1, 1},
{1, 0, 0, 1, 0},
{0, 0, 0, 0, 0},
{1, 0, 0, 0, 1}
};
int i,j;
//------------- print original 2D array ------------------
printf("The given 2D array is : \n");
for(i = 0; i < R; i++)
{
for(j=0; j<C ; j++)
{
printf("%d ", arr2d[i][j]);
}
printf("\n");
}
//------------------------------------------------------
printf("The index of row with maximum 1s is: %d " , findRowMaxOne(arr2d));
return 0;
}
Пример вывода:
Данный 2D массив: 0 1 0 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 Индекс строки с максимумом 1: 1
Блок - схема:
Редактор кода программирования C:
Улучшите этот пример решения и опубликуйте свой код через Disqus.
Previous: написать программу на C, чтобы она возвращала счетную сортировку в массиве.
Далее: Напишите программу на C, чтобы найти максимальный подмассив продукта в данном массиве.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
disqus2code