3

繰り返し数の最長ランの長さの整数値を返すプログラムを作成しようとしています。(たとえば、2、4、4、1、3、4、4、4、4、4、6、6、6 などの整数の配列は、5 つの 4 が最長ランであるため、値 5 を返します。)コードを書いてみましたが、配列内の要素の総数を返し続けます。何がうまくいかないのですか?

int length(int array[], int size)
{
   int x = 0, max;
   int result[size];

   for (int i = 0; i < size; i++)
   {
      x = i + 1;

      if (array[i] == array[x])
      {
         result[i] = x + 1;
      }

      if (result[i] > result[x])
      {
         max = result[i];
      }
   }

   return max;
}
4

3 に答える 3

4

このコードは整数のランを考慮し、ランの最大長を返します。

int length(int array[], int size) {
   int max = 1;
   int current = 1;
   int i;

   for (i = 1; i < size; i++) {
      if (array[i - 1] == array[i]) {    /* the run continues */
          current++;
          max = current > max ? current : max;
      } else {    /* the run was broken */
          current = 1;
      }
   }
   return max;
}
于 2013-06-10T05:26:09.427 に答える