Loading...
Todor_Krachmarov avatar Todor_Krachmarov 0 Точки

Проблем с 08. Most Frequent Number от Arrays and Lists - Exercises

Колеги моля за помощ не мога да измисля какъв е броблема с тази задача че в judge ми дава само 80 / 100

кода ми е:

double[] numbers = Console.ReadLine().Split().Select(double.Parse).ToArray();
            double maxFrequentNum = 0;
            
            int maxCounter = 0;
            for (int i = 0; i < numbers.Length; i++)
            {
                int counter = 0;
                for (int j = i + 1; j < numbers.Length; j++)
                {
                    if (numbers[i] == numbers[j])
                    {
                        counter++;
                        if (counter > maxCounter)
                        {
                            maxCounter = counter;
                            maxFrequentNum = numbers[i];
                        }
                    }
                }
            }
            Console.WriteLine(maxFrequentNum);

благодаря предварително за помоща.

Тагове:
0
Fundamentals Module
koksibg avatar koksibg 892 Точки

Доколкото разбирам и видях, за входни числа никъде не е указано че трябва да са дабъл - пише , че са в интервала [0....65535] - все още не съм я решавал. Ще стигна и до нея..И мисля, че циклите ти би тябвало да са до numbers.Length - 1,тъй - като обхождането на масива започва от нулевия индекс.

0
angelnb avatar angelnb 24 Точки

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace ConsoleApplication14
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] numbers = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
            int maxFrequentNum = 0;

            int maxCounter = 0;
            for (int i = 0; i < numbers.Length; i++)
            {
                int counter = 0;
                for (int j = i; j < numbers.Length; j++)
                {
                    if (numbers[i] == numbers[j])
                    {
                        counter++;
                        if (counter > maxCounter)
                        {
                            maxCounter = counter;
                            maxFrequentNum = numbers[i];
                        }
                    }
                }
            }
            Console.WriteLine(maxFrequentNum);
        }
    }
}

 

Проблемът е при втория цикъл. Трябва да бъде "int j = i", а не "int j = i + 1". Когато прибавяш 1 към counter, изпускаш да преброиш числото, което е "numbers[i]" и counter-ът връща винаги с една бройка по-малко.

0
angelnb avatar angelnb 24 Точки

Май много гадно го обясних, но пробвай да дебъгнеш с този инпут "2 2 2 2 1 2 2 2" . С твоето решение maxcounter ще бъде равен на 6, а всъщност 2-ките са седем на брой.

0
Todor_Krachmarov avatar Todor_Krachmarov 0 Точки

Прав си. Много благодаря за помоща

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