Loading...
ivan.d.uzunov avatar ivan.d.uzunov 22 Точки

Truck Tour from Stacks and Queues - Exercise 20/100

Колеги, реших да започна да пререшавам по-трудните задачи от упражненията от CSharpAdvanced. Нещо зацепих на тази. Знам, че има видео с решението и, но честно казано не знам защо не минава моят код. 20/100 e, като втория тест е Time limit, а другите три Incorrect answer. 

 

https://pastebin.com/j36YXkQJ

https://softuni.bg/downloads/svn/csharp-advanced/May-2017/01.%20CSharp-Advanced-Stacks-And-Queues/01.%20CSharp-Advanced-Stacks-And-Queues-Exercises.docx

 

Благодаря!

Тагове:
0
C# Advanced
Tanyo avatar Tanyo 152 Точки
Best Answer

Ще ти постна моето решение на тази задача... идеята ми е проста... 

Още при входа вадя от петрола който получавам дистанцията до следващия...

Записвам в един масив... (можеш да го записваш и във опашка и да си направиш един каунтър за позицията до която стигнеш... просто аз го напъхах в масив за да си използвам индекса, не за друго... )

Обикалям структурата и ако на позицията имам отрицателна стойност, запазвам индекса, който е вероятната последна помпа.

В противен случай, добавям стойността към следваща (допълвам резервоара) ...

Накрая печатам индекса който съм запазил.

 

using System;
using System.Linq;
				
public class Program
{
	public static void Main()
	{
		    int n = int.Parse(Console.ReadLine());
            int[] pacha = new int[n];
            for (int i = 0; i < n; i++)
            {
                var line = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
                pacha[i] = line[0] - line[1];
            }

            int indix = 0;
            for (int i = 0; i < pacha.Length - 1; i++)
            {
                if (pacha[i] < 0)
                {
                    indix = i + 1;
                }

                if (pacha[i] > 0)
                {
                    pacha[i + 1] = pacha[i] + pacha[i + 1];
                }
            }
            Console.WriteLine(indix);
      }  
}

 

2
23/08/2017 20:24:12
tiapko avatar tiapko 31 Точки

Малко по-различен подход с превъртане. Ако някой път дава отрицателна стойност, то никога не може да се започне от него.

https://github.com/tiapko/CSharp-Advanced/blob/master/02.Exercises-Stacks%D0%90ndQueues/06.TruckTour.cs

0
23/08/2017 23:05:16
anton_mironov avatar anton_mironov 19 Точки

@Tanyo, благодаря колега, но нали уж смисъла на упражнението е да използваме опашки...

Ето моят код с опашка, който за жалост дава също само 20 точки... Идея?

        static void Main(string[] args)
        {
            int input = int.Parse(Console.ReadLine());
            var queue = new Queue<int>();
            int iteration = 0;
            int totalFuel = 0;

            for (int i = 0; i < input; i++)
            {
                string[] line = Console.ReadLine().Split(' ');
                int calc = int.Parse(line[0]) - int.Parse(line[1]);
                queue.Enqueue(calc);
            }

            for (int i = 0; i < queue.Count; i++)
            {
                int firstNum = queue.Dequeue();
                if (firstNum + totalFuel <= 0)
                {
                    queue.Enqueue(firstNum);
                    iteration++;
                }
                else
                {
                    totalFuel += firstNum;
                }
            }
            Console.WriteLine(iteration);
        }
    
 

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