C# Fundamentals - 07. Arrays, 90/100 но защо?


0

Здравейте,

Някой може ли да сподели малко акъл? От 30 мин се чудя защото не ми дава 100/100 и какъв е последния кейс... Благодаря предварително

using System;

namespace _004.MaximalSequence
{
    class MaximalSequence
    {
        static void Main()
        {
            int a = 0;
            int b = 0;
            int c = 0;
            int d = 0;

            int n = int.Parse(Console.ReadLine());

            int[] array = new int[n];
            for (int i = 0; i < n; i++)
            {
                array[i] = int.Parse(Console.ReadLine());
            }

            for (int i = 0; i < n ; i++)
            {
                a = array[i];
                if (i < n - 1)
                {
                    b = array[i + 1];
                }
                if (a == b)
                {
                    c++;
                    if (c > d)
                    {
                        d = c;
                    }
                }
                else
                {
                    c = 0;
                }
            }
            if (d > 1)
            {
                Console.WriteLine(d + 1);
            }
            else
            {
                Console.WriteLine(0);
            }
        }
    }
}




Отговори



1

Здравей, yGaByGa! :)

За съжаление видях, че в момента bgcoder не работи, за да ти разчистя решението, но и нещо не разбирам идеята ти. За какво ти е този for цикъл, който реално ти е за 2 минавания? После защо делиш по този начин digits?  digits/1 си е digits. :)

Ето едно много изчистено решение на задачата Number of Pages за 100/100. :)


от pepsi_555 (1932 точки)


1

Здравей,

Страхотно решение, само 10 реда код Оо... За делението сложил съм го просто за мен да знам че там се изчисляват страниците по едно число, за цикала, просто за проверка ако с един път не стане да провери 2-ри път.

Но определено твоето решение ми хареса :) Сега ще го разуча за с един поглед не го брах на 100% :)

Благодаря за вниманието!

П.С. Като търсих инфо попаднах и на решение от 4 реда :) Май във видеото го видях след като не успях да го направя по моя начин.

for (int i = 0; digits > 0 ; i++)
            {
                pages++;
                digits -= i.ToString().Length;
            }


от yGaByGa (256 точки)

1

Благодаря, yGaByGa! :) Радвам се, че ти е харесало и ти е полезно. Ако имаш някакви въпроси по него, пиши на лични - ще ти го обясня. Моля. :)

И аз благодаря, че сподели тази идея. Много хитра. Харесва ми. :)

Между другото каквo става с bgcoder? Знае ли се кога ще го оправят? :)


от pepsi_555 (1932 точки)


0

Здравей, Стояне. :)

Според мен ти гърми, когато максималната редица от еднакви елементи е последната редица.

Ето моето решение на задачата за 100/100 с доста по-опростено обхождане на масива и без толкова много допълнителни променливи.


от pepsi_555 (1932 точки)


0

Благодаря за инфото ще разгледам къде какво става :)

Явно наистина трябва да спестявам тия променливи че ти си втория за седмица който ми казва че ползвам много променливи. :(


от yGaByGa (256 точки)


0

Някаква представа защо тук пак съм 90/100 ? Не можах да измисля по грамотно и по работещо решение , затова с ифове ... :(

Number of Pages

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

namespace _003.NumberOfPages
{
    class NumberOfPages
    {
        static void Main()
        {
            int digits = int.Parse(Console.ReadLine());

            int pages = 0;

            for (int i = 0; i < 2; i++)
            {
                if ( digits <= 0)
                {
                    break;
                }
                if (digits <= 9)
                {
                    pages += digits / 1;
                    break;
                }
                else
                {
                    digits -= 9;
                    pages += 9;
                }

                if (digits <= 99)
                {
                    pages += digits / 2;
                    break;
                }
                else
                {
                    digits -= 180;
                    pages += 90;
                }

                if (digits <= 999)
                {
                    pages += digits / 3;
                    break;
                }
                else
                {
                    digits -= 2700;
                    pages += 900;
                }

                if (digits <= 9999)
                {
                    pages += digits / 4;
                    break;
                }
                else
                {
                    digits -= 36000;
                    pages += 9000;
                }

                if (digits <= 99999)
                {
                    pages += digits / 5;
                    break;
                }
                else
                {
                    digits -= 450000;
                    pages += 90000;
                }

                if (digits <= 999999)
                {
                    pages += digits / 6;
                    break;
                }
                else
                {
                    digits -= 5400000;
                    pages += 900000;
                }
            }
            Console.WriteLine(pages);
        }
    }
}


от yGaByGa (256 точки)


0
Дай линк към условието на задачата. :)

от pepsi_555 (1932 точки)

0

https://github.com/TelerikAcademy/CSharp-Part-1/blob/master/Workshops/November-2016/3.%20Number%20of%20Pages/README.md

Заповядай


от yGaByGa (256 точки)