Member 13616463 Ответов: 2

Крупнейший подмассива с одинаковым количеством 0 и 1


int findSubArray(int arr[], int n)
   {
       int sum = 0 ;
       int maxsize = -1 , startindex = 0 ;
       int endindex = 0 ;

       for (int i = 0; i < n - 1; i++)
       {
           sum = (arr[i] == 0) ? -1 : 1 ;

           for ( int j = i + 1 ; j < n ; j++ )
           {
               if ( arr[j] == 0 )
               {
                   sum += -1;
               }
               else
               {
                   sum += 1;
               }



               if ( sum == 0 && maxsize < j - i + 1 )
               {

                   maxsize = j - i + 1;
                   startindex = i;

               }

           }

       }


       endindex = startindex + maxsize - 1 ;

       if ( maxsize == -1 )
       {
           System.out.println( "No such subarray" );
       }

       else
       {
           System.out.println( startindex + " to " + endindex );
       }

       return maxsize ;

   }


Что я уже пробовал:

Я не могу полностью понять, как этот код работает для поиска самого большого подмассива с равным числом 0 и 1 . Я ищу кристально ясное объяснение . Пожалуйста помочь .

2 Ответов

Рейтинг:
2

Patrice T

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что он делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.