Loading...
svetlyoek avatar svetlyoek 20 Точки

07.Max sequence of equal elements-C# tech-Arrays exercise

Здравейте.Бихте ли ми обяснили как точно работи следния код и каква е логиката(най-вече на последния цикъл за принтирането,както и целта на променливата start...)?Ето кода:

https://pastebin.com/mn9D5bSr

Мерси

Тагове:
0
Fundamentals Module
Sad_homecoming avatar Sad_homecoming 135 Точки

Намираш колко пъти имаш едно и също число в масива = max.

Намираш от коя позиция започват повтарящите се числа = start.

Като намериш най-дългата поредица от еднакви числа въртиш цикъл в масива от първото еднакво число (start + 1) до последното еднакво число (star + max +1)

 

пп. мястото на count++; в цикъла не е там, ако вместо на 17-ти ред отиде след

                    if (count > max)

                    {

                        start = i - count;

                        max = count;

                    }

няма да има нужда от тези + 1 в (start + 1) и (star + max +1) и ще е по-разбираемо.

1
svetlyoek avatar svetlyoek 20 Точки

Благодаря,но защо да е start= i-count съответната позиция?

0
krum_43 avatar krum_43 756 Точки

Добре е да даваш точното условие на задачата за да може да се проследят индексите

0
svetlyoek avatar svetlyoek 20 Точки

Write a program that finds the longest sequence of equal elements in an array of integers. If several longest sequences exist, print the leftmost one.

Examples

Input

Output

2 1 1 2 3 3 2 2 2 1

2 2 2

1 1 1 2 3 1 3 3

1 1 1

4 4 4 4

4 4 4 4

0 1 1 5 2 2 6 3 3

1 1

0
Philipopilis avatar Philipopilis 3 Точки

Здравейте, надявам се кодът, който предлагам като решение на задачата, да е по-смилаем :

            int[] numbers = Console.ReadLine()
                            .Split()
                            .Select(int.Parse)
                            .ToArray();
            int counter = 0;
            int winningCounter = 0;
            int index = 0;
            string number = string.Empty;

            for (int i = 0; i < numbers.Length - 1; i++)
            {
                if (numbers[i] == numbers[i+1])
                {
                    counter++;
                    if (counter > winningCounter)
                    {
                        winningCounter = counter;
                        index = i;
                        number = numbers[i].ToString();
                    }
                }
                else
                {
                    counter = 0;
                }
            }
            for (int i = 0; i <= winningCounter; i++)
            {
                Console.Write(number + " ");
            }
        }

1
astankin avatar astankin 5 Точки

Здравейте, ето едно решение и от мен.

int[] nums = Console.ReadLine().Split().Select(int.Parse).ToArray();
            int counter = 1;
            int theMost = 0;
            int element = 0;
            for (int i = 0 ; i < nums.Length - 1; i++)
            {
                if (nums[i] == nums[i + 1])
                {
                    counter++;                   
                }
                else
                {                  
                    counter = 1;                   
                }
                if (counter > theMost)
                {
                    theMost = counter;
                    element = nums[i];
                }             
            }
            for (int j = 1; j <= theMost; j++)
            {
                Console.Write($"{element} ");
            }
        }
    }
}

0
krum_43 avatar krum_43 756 Точки

Това е универсалното решение на задачата.Иначе имената на променливите могат да бъдат и малко по-показателни.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.