Loading...
krum_43 avatar krum_43 756 Точки

По принцип е възможно,но една такава проверка е излишна.

Ето един изчистен код и от мен:

https://pastebin.com/1VgSdLF6

-2
02/01/2021 14:00:28
kalina_ilieva avatar kalina_ilieva 4 Точки

Здравейте,

сега решавам тази задача и имам същия проблем. Проверката, която препоръчва колегата по-горе я има в кода и въпреки това дава 60/100. Имате ли представа къде е проблема?

0
nickwork avatar nickwork 657 Точки

Пускам ти направо моето решение

 

using System;
using System.Linq;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Text;

namespace _6.Courses
{
    class Program
    {

        public static void Main()
        {
            int count = int.Parse(Console.ReadLine());
            Dictionary<string, Dictionary<string, List<string>>> register = new Dictionary<string, Dictionary<string, List<string>>>();

            for (int i = 0; i < count; i++)
            {
                string[] input = Console.ReadLine().Split();
                string continent = input[0];
                string country = input[1];
                string city = input[2];

                if (!register.ContainsKey(continent))
                {
                    register.Add(continent, new Dictionary<string, List<string>>());
                }

                if (!register[continent].ContainsKey(country))
                {
                    register[continent].Add(country, new List<string>());
                }
                register[continent][country].Add(city);
            }

            foreach (var currentContinent in register)
            {
                Console.WriteLine($"{currentContinent.Key}:");

                foreach (var currentCountry in currentContinent.Value)
                {
                    Console.WriteLine($"  {currentCountry.Key} -> {string.Join(", ", currentCountry.Value)}");
                }
            }
        }
    }
}

0
kalina_ilieva avatar kalina_ilieva 4 Точки

Благодаря!

0
li_damian avatar li_damian 0 Точки

И аз благодаря, защото и аз имах същия проблем като колегите, на които им дава 60/100.

Решението на колегата nickwork наистина дава 100/100 но така има възможност градовете да се повтарят. Например ако подам следните данни:

3
Europe Germany Berlin
Europe Germany Berlin
Europe Germany Berlin

Ще ми даде:
Europe:
Germany -> Berlin, Berlin, Berlin

Наистина в условието на задачата не се споменава, че градовете не могат да се повтарят, но за мен лично това си беше доста заблуждаващо и изгубих много време.

0
nickwork avatar nickwork 657 Точки

Като бърз вариант за решаване на този проблем е вместо лист да използваш един хеш сет и всичко става 6...сигурно по условие това го няма за повтарящи се градове и най вероятно за това не съм го предвидил а и щом е дало 100/100...иначе забележката ти е уместна :) , в реален проект такива ситуации трябва добре да се обмислят good job, че обръщаш внимание на такива моменти...а самата задача тества дали сме разбрали идеята на речниците...без всичките и гранични положения които могат в последствие да изникнат...

0
v.angelov92 avatar v.angelov92 8 Точки

Здравейте, имам същия проблем и както колега е казал долу ползвам HashSet, но въпреки това взимам само 60/100. Прилагам кода:

using System;
using System.Linq;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Text;

namespace Exam
{
    class Program
    {
        static void Main(string[] args)
        {
            var counter = int.Parse(Console.ReadLine());

            var dictionary = new Dictionary<string, Dictionary<string, HashSet<string>>>();

            for (int i = 0; i < counter; i++)
            {
                var input = Console.ReadLine().Split(' ').ToArray();

                var continent = input[0];
                var country = input[1];
                var city = input[2];

                if (!dictionary.ContainsKey(continent))
                {
                    dictionary.Add(continent, new Dictionary<string, HashSet<string>>());
                }

                if (!dictionary[continent].ContainsKey(country))
                {
                    dictionary[continent].Add(country, new HashSet<string>());
                }

                if (!dictionary[continent][country].Contains(city))
                {
                    dictionary[continent][country].Add(city);
                }

            }

            foreach (var (continent, country) in dictionary)
            {
                Console.WriteLine($"{continent}: ");

                foreach (var currentCountry in country)
                {
                    Console.WriteLine($"{currentCountry.Key} -> {string.Join(", ", currentCountry.Value)}");
                }
            }

        }
    }
}

 

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