Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #define ROWS 4
- #define COLS 5
- void fill_matrix(int array[ROWS][COLS]) {
- srand(time(NULL));
- for (int i = 0; i < ROWS; i++) {
- for (int j = 0; j < COLS; j++) {
- array[i][j] = 1 + rand() % 3;
- }
- }
- }
- void print_matrix(int array[ROWS][COLS]){
- for (int i = 0; i < ROWS; i++){
- for (int j = 0; j < COLS; j++){
- printf("%d ", array[i][j]);
- }
- printf("\n");
- }
- }
- void find_g(int matrix[ROWS][COLS]){
- int maxCount = 0;
- int coords[] = {0, 0, 0, 0, 0, 0};
- for (int i = 0; i < ROWS; i++){
- for (int j = 0; j < COLS; j++){
- // Вот отсюда можно выкинуть вычисление уголочка из этой точки в отдельный поток
- int k = 0;
- int lengthOfHorizontal = 0; // Сюда сохраняем длину повторящихся символов в строке
- while (j + k < COLS && matrix[i][j + k] == matrix[i][j]){
- lengthOfHorizontal++;
- // Или вот отсюда можно запускать потоки, проверяющие вертикальные линии на совпадение с элементом matrix[i][j]
- // Нижний цикл выкинуть в отдельный поток
- int l = 0;
- int lengthOfVertical = 0; // Сюда сохраняем длину повторяющихся символов в столбце
- while (i + l < ROWS && matrix[i + l][j + k] == matrix[i][j + k]){
- lengthOfVertical++;
- l++;
- }
- if (lengthOfHorizontal + lengthOfVertical > maxCount){
- coords[0] = i;
- coords[1] = j;
- coords[2] = i;
- coords[3] = j + k;
- coords[4] = i + l - 1;
- coords[5] = j + k;
- maxCount = lengthOfHorizontal + lengthOfVertical;
- // coords = {i, j, i, j + k, i + l - 1, j + k};
- }
- k++;
- }
- }
- }
- for (int i = 0; i < 6; i++){
- printf("%d ", coords[i]);
- }
- }
- int main() {
- // printf("Hello, World!\n");
- int arr[ROWS][COLS] = {{0, 2, 0, 2, 0},
- {0, 1, 1, 1, 0},
- {2, 0, 2, 1, 1},
- {0, 2, 0, 1, 1}};
- // fill_matrix(arr);
- print_matrix(arr);
- find_g(arr);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement