whitefang4773 Ответов: 2

как написать программу найти наибольшее расстояние между двумя равными ячейками в массиве


привет, ребята, я новичок в области программирования, и мне нужна помощь, чтобы написать программу, которая найдет самое большое расстояние между двумя равными ячейками в массиве

Tarun Mangukiya

Нужно больше объяснений...

whitefang4773

• Рассмотрим массив целочисленных значений размером N, имеющих значения, как в этом примере.
Пример

7 0 0 0 5 6 7 5 0 7 5 3

Ваша задача будет состоять в том, чтобы написать программу поиска наибольшего расстояния между ними.
Две равные клетки. В этом примере. Расстояние измеряется числом
Например, расстояние между первой и четвертой ячейками равно
2 (ячейка 2 и ячейка 3).
В приведенном выше примере самое большое расстояние находится между первыми 7 и
10-й 7-й, с расстоянием 8 ячеек, то есть количество ячеек между 1 - м
И 10-7С.
Примечание:
- Значения массива будут взяты у пользователя
- Если у вас есть вход типа 1111111, то расстояние-это число
Ячейки между первой и последней ячейками.

Tarun Mangukiya

Увидимся, ты получишь свой ответ.
Просто код, как вы мне объяснили.
Вы знаете технику поиска. Просто реализуйте в коде.

whitefang4773

Андре Краак
действительно спасибо , вы мне очень помогли узнать, как думать об этой проблеме
Действительно спасибо

2 Ответов

Рейтинг:
2

Member 14761063

Вы можете реализовать это с помощью двух циклов один для первого элемента [0] и второй для второго элемента [1] и найти сравнить до последнего элемента массива получить максимальное значение это разница между первым и последним найти

экс :

int[] Arr;
            Console.WriteLine("Please Enter Size Of Array");
            int ArrSize =Convert.ToInt32( Console.ReadLine());
            Arr = new int[ArrSize];
            for(int i= 0; i<Arr.Length;i++)
            {
                Console.Write("enter value ( " + i + ", " + ArrSize  + ") :");
                Arr[i] = int.Parse(Console.ReadLine());
            }

            int max = 0;
            int n = 0;
            int n1 = 0; 
            for (int x = 0; x < Arr.Length; x++)
            {
                //   Console.WriteLine(Arr[x]);

                for (int j = x + 1; j < Arr.Length; j++)
                {
                    if (Arr[x] == Arr[j])
                        n = j;
                    n1 = x;

                    if (n - n1 > max)
                    {
                        max = n - n1;
                    }
                }
            }
            Console.WriteLine(max - 1);


Dave Kreskowiak

Делать за них чью-то домашнюю работу здесь не одобряют.

Кроме того, я серьезно сомневаюсь, что оп все еще имеет это назначение семь лет спустя.

CHill60

Это всего лишь явная реализация решения 1 - но обратите внимание на комментарий Андре: "я не дал никакого кода, потому что если вы хотите узнать, то лучше всего сделать это самостоятельно." Вот почему выполнение домашних заданий для людей не одобряется - вы им не помогаете.
Это похвально, что вы хотите помочь, но придерживайтесь ответов на новые сообщения, где ОП все еще нуждается в помощи, и постарайтесь убедиться, что вы привносите что-то новое в поток

Рейтинг:
15

André Kraak

Лучший способ начать-это записать проблему на бумаге и найти решение.

Таким образом, у вас есть ряд, например, таких символов, как:

0 1 2 3 4 5 6 7 8 9
a h K ; a , a K h k

Я бы начал с самого начала С "а", тогда лучший способ найти наибольшее "расстояние" для равного символа-это искать его с конца строки. Для "А" это будет позиция 6, поэтому текущее максимальное расстояние равно 5.
Теперь перейдем к следующему символу "h", который можно найти с конца на позиции 8. Таким образом, теперь "h" становится новым самым большим расстоянием 6.
Вы продолжаете этот путь до тех пор, пока не достигнете конца строки, в это время вы теперь персонаж с наибольшим "расстоянием".

Вы можете реализовать это с помощью двух циклов, один из которых начинается в начале и идет до конца. Второй начинайте в самом конце, пока не найдете того персонажа, которого ищете.
Каждый раз, когда вы находите символ во втором, вы проверяете, больше ли расстояние, чем то, которое вы уже нашли, и если да, то сделайте это новым самым большим.

Я надеюсь, что это поможет вам закодировать решение вашей проблемы.

Я не давал никакого кода, потому что если вы хотите научиться, то лучше всего сделать это самостоятельно.