Loading...
G.Burlakova avatar G.Burlakova 36 Точки

[C# Basics] Подготовка за изпит със системата на BgCoder

Здравейте!

Дано да не повтарям тема, ако е така ще опитам да махна тази. Предлагам тук да споделяме решения и въпроси относно задачите, които можем да проверяваме в сайта bgcoder.bg, като подготовка за изпита. Смятам, че ще е полезно, т.к. при това автоматично оценяване един несъобразен тип или нещо дребно може да даде малко или никакви точки за принципно верен алгоритъм - в такива случаи тук ще можем да потърсим къде има проблем.

Днес се захванах със задачите от C# Fundamentals 2011/2012 Part 1 - Sample Exam - тук може да ги пробвате.

Достигнах до решения на първите 4 задачи. Тук можете да ги видите:

Task 1 - Cartesian Coordinate System

Task 2 - Miss Cat 2011

Task 3 - Forest Road

Task 4 - Binary Digits Count

На последната 5 задача достигнах до максимум 80 точки и не успявам да открия къде греша. Решението ми е вероятно най-неефективното, но това беше първото ми хрумване. Тук може да видите решението:

Task 5 - Subset Sums

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

Същото се отнася и за другите задачи - бих искала да видя и други по-ефективни начини за решаване. Очаквам съвети. Благодаря!

Тагове:
1
Programming Basics
aslv1 avatar aslv1 304 Точки

Здравей!

Тук е моето решение (взема 100 точки).

0
Dekameron avatar Dekameron 481 Точки

Привет!

 

Ето това е решение на Subset Sums задачата.

Решението изхожда от това, че като пресметнем колко са всички възможни комбинации

int max =   Math.Pow(2, N) - 1

и си направим една мислена таблица, и наредим битовете на числата от 1 до max едно под друго всъщност 1-ците ни показват кои числа можем да изпозлваме за зададената сума. Не знам до колко добре го обясних, но тук ако искаш можеш да изгледаш това видео и да ти стане по-ясно :)

Ще ти дам пример с условието където се иска да се намери сумата 4 от множеството на 1, 2, 3, 4. Това го гледай заедно с решението, което съм дал.

                    1
1       0       0       0       1
2       0        0       1       0
3       0       0       1       1
4       0       1       0       0
5       0         1         0        1
6        0         1        1         0
7        0         1         1        1
8        1        0         0        0

 

Имаме 2 вложени цикъла: колоните са ни i, редиците са ни j.

Ако разбереше решението ще видиш, че при 5та колона,

i = 5 и j  = 1 currentSum =+ 1; цикъла j продължава и при j = 3 currentSum =+ 3;

=> currentSum е станала 4 (1 + 3) и тя е равна на зададената във входа сума.

=> answer++

 

и при 8ма колона,

i = 8, j = 4 currentSum += 4;

=> currentSum е станала 4  и тя е равна на зададената във входа сума.

=> answer++

 

Това е от мен.

Успех!

 

6
Ventsislav avatar Ventsislav 343 Точки

Здравей , полезна тема , но вече има подобна отворена Тук

0
beBoss avatar beBoss 507 Точки

А какъв е смисъла от switch-a, след като връща default-я case?

 

 

for (int i = 0; i < n; i++)
{
   currentVote = int.Parse(Console.ReadLine());
   cats[currentVote - 1]++;
}

0
MehmedAdemov avatar MehmedAdemov 1 Точки

След извество време блъскане на главата и аз успях да е реша, колеги ако имам няква греша или ако може да се оптимизира ще ви бъда благодарен ако ми помогнете :).
http://pastebin.com/XP8nrYdR

 

ModEdit: Прочети правилата на форума - дългите копирания на код не са разрешени, затова се ползва pastebin, git и т.н.

0
09/07/2015 20:59:26
Filkolev avatar Filkolev 4482 Точки

Защо просто не я тестваш в системата, там ще си проличи най-ясно доколко вярно работи. Дава 20/100 с премахване на излишните съобщения, има неща, които трябва да се оправят.

0
MehmedAdemov avatar MehmedAdemov 1 Точки

В системата немога да намеря тази задача за да е тествам.

0
Filkolev avatar Filkolev 4482 Точки

Авторката на темата е дала линк.

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