Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият.
Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание.
Използваме бисквитки и за измерване на маркетинговите ни усилия.
Доста се мъчих и не успях. Решението ти е супер.
Здравейте,
втори ден вече се мъча да мина от 75 на 100/100 със същия код като на колегата E.Erol RemoveAt - 75/100 : https://pastebin.com/zJSrn9QS.
Най-накрая ми светна че ако има 2 бомби една до друга при преминаване от една итерация на главния цикъл към следващата се пропуска номер на бомба и затова дава грешка на първи тест. Трябва просто когато се изтрият всички елементи преди да се завърти следващата итерация да се сложи i--;
Ето примерен вход на това което казвам:
[4 4 4 2 3 4 7]
4 1
Ето и решение което дава 100/100 в Judge:
List<int> numbers = Console.ReadLine()
.Split()
.Select(int.Parse)
.ToList();
List<int> elements = Console.ReadLine()
.Split()
.Select(int.Parse)
.ToList();
int bombNum = elements[0];
int power = Math.Abs( elements[1]);
// Обхождам целия масив и търся дали ще намеря елемент равен на числото на бомбата
for (int i = 0; i < numbers.Count; i++)
{
if (numbers[i] == bombNum)
{
// Търся началната точка от къде да започна да трия
int start = i - power;
// Ако началната точка е извън пределите на индекса т.е. под нулевия индекс му казвам да започва от нулевия
if (start < 0)
{
start = 0;
}
// Търся крайната точка до къде да трия
int finish = i + power + 1;
// Ако крайния индекс за триене е по-голям от броя елементи, то тогава края му давам да бъде равен на number.count защото иначе Exeption
if (finish > numbers.Count)
{
finish = numbers.Count;
}
// След като имам начална и крайна точка въртя ги в цикъл и ги трия
for (int j = start; j < finish; j++)
{
numbers.RemoveAt(start);
}
i--;
}
}
Console.WriteLine(numbers.Sum());
Благодаря момчета...
и аз се травмирах доста с тази задача и пропускът ми беше същия както при вас.
Затова смятам от тук нататък - ако правя промени в List докато го въртя в цикъл - ако е имало промяна направо да стартирам обхождане от i = 0 или ако ползвам while да му слагам условие while (testList.Contains(въпроснияЕлемент) ... което си е пак пълно обождане преди всеки лооп.
Верно, че неможе да се генерализира (зависи от конкретната ситуация) но, по-добре човек да си "върже гащите" (да си вземе 100/100 на изпита) от колкото да плете тънки логики, където не е ясно къде ще изгърмят и докато дебъгва - изпита де минал...
Още веднъж благодаря