Loading...
DVatkov avatar DVatkov 3 Точки

Задача 03.Increasing Crisis от Array and List Algorithms -More Exercises

Моля, за малко помощ...

Не мога да хвана,някое изключение..Ето и кода:

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

namespace _03.Increasing_Crisis
{
    class Program
    {
        static void Main(string[] args)
        {
            var n = int.Parse(Console.ReadLine());
            var output = new List<int>();

            for (int i = 0; i < n; i++)
            {
                var input = Console.ReadLine().Split(' ').Select(int.Parse).ToList();
                var rightMostElement = 0;
                var position = 0;
                var isBreak = false;
                if (output.Count==0)
                {
                    for (int j = 0; j <input.Count ; j++)
                    {
                        output.Add(input[j]);
                    }
                }
                else
                {
                   for (int k = 0; k < output.Count; k++)
                   {
                        if (input[0] > output[k])
                        {
                            rightMostElement = output[k];
                            position = output.IndexOf(rightMostElement);
                        }
                        else if (input[0]==output[k])
                        {
                            position++;
                        }
                   }
                    if (input[0] >= output[0])
                    {
                        output.InsertRange(position + 1, input);
                    }
                   
                }
                var breakElement = 0;
                var breakPosition = 0;
                for (int j = 1; j < output.Count; j++)
                {
                    if (output[j] < output[j-1])
                    {
                        breakElement = output[j];
                        breakPosition = output.LastIndexOf(breakElement);
                        isBreak = true;
                        break;
                    }
                }
                if (isBreak)
                {
                    for (int j = output.Count-1; j >=breakPosition; j--)
                    {
                        output.RemoveAt(j);
                    }
                }
            }
            Console.WriteLine(string.Join(" ",output));
        }
    }
}

 

Тагове:
1
Programming Fundamentals
Bullsized avatar Bullsized 153 Точки

ето едно примерно решение от мен

но като гледам какъв ред съм си закоментирал отдолу и ми става ясно, че тва е мега грозна задача. поне решението е 100/100 и с него можеш да осъзнаеш какво е Hadouken if :)
0
spzvtbg avatar spzvtbg 581 Точки

тези задачи са такива и твоя е добре, погледни тук - 2 пъти по дълъг е. но съм сигурен че като стигнем пак до там ще ги решим по - добре.

1
05/06/2017 23:34:12
selfy avatar selfy 0 Точки

Bullsized, spzvtbg, вашите решения действително дават 100/100 в judge, но не смятам, че дават правилни решения на:

3
1 3 5 6
1 5 1
1 2 3
-------------
1 1 1 2 3 5, а правилният отговор би трябвало да е: 1 1 1 2 3

 

4
1 3 7
9 11 3
17 8 1 3 6
16 17 19 2
-------------
1 3 7 9 11 16 17 19, а правилният отговор би трябвало да е: 1 3 7 9 11 16 17

 

Отделно от това, не смятам, че в кода на Bullsized е редно да се сортира първият подаден масив...

 

При мен гърми последният тест в judge и дава 80/100.

0
08/09/2017 01:18:10
Dimitar_Petkov_Petkov avatar Dimitar_Petkov_Petkov 169 Точки

Здравейте!

И аз я докарах до 80 от 100, но според условието - се добавя числото преди "чупещото" и тогава:

3
1 3 5 6
1 5 1
1 2 3

би трябвало да е : 1 1 1 2 3 3 5 5

а 

4
1 3 7
9 11 3
17 8 1 3 6
16 17 19 2

би трябвало да е: 1 3 7 9 11 16 17 17 19

Или греша ?

P.S това е моят "мазеляк"   https://github.com/morskibg/CS_trainingAtWork/blob/master/1/Program.cs

0
29/09/2017 00:55:08
selfy avatar selfy 0 Точки

За съжаление условието на задачата е написано така, че да търпи различни нюанси на интерпретацията. Смятам, че би било добре или да се напише условието малко по-ясно, или да се добавят още един, два "нулеви" теста, за да се изясни какво точно се изисква да бъде написано :)

0
Dimitar_Petkov_Petkov avatar Dimitar_Petkov_Petkov 169 Точки

Здрасти,

предполагам нарочно ги правят така условията - да има гърч :).

Относно поведението при "чупещо" число - от примерите се вижда :

5

1 2 12 15 16

4 5 6

5 5 5

3 2

3 4 5 6

***************

1 2 3 3 4 5 6  - първата 3 се добавя при "счупването".

Както и да е - ще го мъчим още!

Поздрави!

0
selfy avatar selfy 0 Точки

Гърчът има смисъл само, ако знаеш какво точно правиш, СМСМ ;)

Ето и моето решение, ако смяташ, че ще ти помогне, хвърли му едно око:

https://pastebin.com/8sF6yvTr

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