Kamino Factory - 90/100
Здравейте, колеги !
Не мога да открия къде съм сбъркал, ако може малко помощ :D
https://pastebin.com/LJAg3F6j
Задачата е Kamino Factory от array exercises.
Благодаряяя :)))
Здравейте, колеги !
Не мога да открия къде съм сбъркал, ако може малко помощ :D
https://pastebin.com/LJAg3F6j
Задачата е Kamino Factory от array exercises.
Благодаряяя :)))
Изглежда, че имаше проблем в логиката за анализиране на всяко dna, защото след като я промених, задачата мина в Judge.
Това е преправеният код:
using System;
using System.Linq;
namespace ConsoleApp5
{
class Program
{
static void Main(string[] args)
{
int winnerSequence = 0;
int winnerIndex = 0;
int winnerSum = 0;
int winnerSample = 0;
int sampleCount = 0;
string input;
int n = int.Parse(Console.ReadLine());
int[] bestArray = new int[n];
while ((input = Console.ReadLine()) != "Clone them!")
{
int[] dna = input
.Split("!".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
.Select(int.Parse)
.ToArray();
sampleCount++;
int sum = 0;
int curStart = -1;
int curLength = 0;
int currentPositionMax = -1;
int currentLengthMax = 0;
for (int i = 0; i < dna.Length; i++)
{
if (dna[i] == 1)
{
if (curStart == -1)
{
curStart = i;
}
sum++;
curLength++;
}
if (dna[i] == 0 || i == dna.Length - 1)
{
if (curLength > currentLengthMax)
{
currentLengthMax = curLength;
currentPositionMax = curStart;
}
curLength = 0;
curStart = -1;
}
}
if (currentLengthMax > winnerSequence ||
(currentLengthMax == winnerSequence && currentPositionMax < winnerIndex) ||
(currentLengthMax == winnerSequence && currentPositionMax == winnerIndex && dna.Sum() > winnerSum))
{
winnerSequence = currentLengthMax;
winnerIndex = currentPositionMax;
winnerSum = dna.Sum();
bestArray = dna.ToArray();
winnerSample = sampleCount;
}
}
Console.WriteLine($"Best DNA sample {winnerSample} with sum: {winnerSum}.");
Console.WriteLine(string.Join(" ", bestArray));
}
}
}
Привет, колега
Много ти благоря. Разбирам, че със сигурност задачата не е решена по най-добрия начин. Но все пак ми е интересно, къде точно беше проблемът в логиката ?
@darkata405
Проблемите са повече от един, защото не успях да намеря една промяна, която да го оправи, както и входни данни, които да чупят решението.
Ето още един работещ вариант, който е може би една идея по-близо до оригиналния код, но отново е с много - уж дребни, промени:
Като препоръка - декларирайе и инициализирайте променливите си там, където са нужни, във възможно най-малък скоуп.
Например longestSequence се преизползва за всеки стринг, но е инициализирана само веднъж - в началото на програмата, вместо за всеки инпут, което е предпоставка за трудни за откриване проблеми.
MartinBG
Страшно много благодаря за всичко !!!