Определить номер строки, в которой находится самая длинная серия одинаковых элементов - C (СИ) (72916)

Формулировка задачи:

Собственно, есть задание. Определить номер строки, в которой находится самая длинная серия одинаковых элементов. Я написал функцию. Однако она работает не совсем так, как надо. Может, я что-то упустил?
int func_2(int **A, int M, int N)     
{
  int i,j,mas1[M], L, max;
  for(i=0; i<M; i++)
     {
         mas1[i]=0;
     }
 
     for(i=0; i<M; i++)
     {
         for(j=0; j<N; j++)
         {
           if(A[i][j]==A[i][j+1])
                 mas1[i]++;
         }
     }
     max=mas1[0]; L=0;
     for(i=0; i<M; i++)
     {
         if(mas1[i]>max)
          {
             max=mas1[i];
             L=i;
          }
      }
  return(L+1);
}

Код к задаче: «Определить номер строки, в которой находится самая длинная серия одинаковых элементов - C (СИ) (72916)»

textual
#include <stdio.h>
#include <stdlib.h>
 
int func(int **A, int m, int n)
{
    int B[m], i, j, max, temp, maxid = 0;
    printf("\nMax count\n");
    for(i = 0; i < m; ++i)
    {
        B[i] = 0;
        temp = max = 1;
        for(j = 0; j < n - 1; ++j)
        {
            if(A[i][j] == A[i][j + 1])
                ++temp;
            else
            {
                if(max < temp)
                    max = temp;
                temp = 1;
            }
        }
        B[i] = max;
        printf("%i\n", B[i]);
    }
    for(i = 1; i < m; ++i)
        if(B[maxid] < B[i])
            maxid = i;
    return maxid;
}
 
int main()
{
    const int n = 5, m = 10;
    int i, j;
    int **A = calloc(n, sizeof(int*));
    if(!A) { fprintf(stderr, "Error: memory!"); return -1; }
    for(i = 0; i < n; ++i)
    {
        A[i] = calloc(m, sizeof(int));
        if(!A[i]) { fprintf(stderr,"Error: memory!"); return -1;}
        for(j = 0; j < m; ++j)
            A[i][j] = rand()%2;
    }
    printf("Array loaded\n");
    for(i = 0; i < n; ++i)
    {
        for(j = 0; j < m; ++j)
        {
            printf("%-4i", A[i][j]);
        }
        printf("\n");
    }
    printf("\nMax row\n%i", func(A, n, m));
    return 0;
}

10   голосов, оценка 3.900 из 5


СОХРАНИТЬ ССЫЛКУ