Питане за 2-ра задача от изпита Basically днес. Честита Цветница! Поздравления на всички с MAX
Здравейте,Честита Цветница! Поздравления на всички изкарали 500 точки днес! Не съм между тях,единствено 2-ра задача ми се опъна (уж лесна),при нея достигнах само 50 точки. Макар и късно искам да разбера грешката си.:) Ето кода:
using System;
using System.Collections.Generic;
namespace _2_Game_of_names
{
class Program
{
static void Main()
{//INPUT:
int countplrs = int.Parse(Console.ReadLine());
string[] players = new string[countplr];
// BigInteger[] scorePlayer = new BigInteger[countplrs];
int[] scorePlayer=new int[countplrs];
for (int i = 0; i < countplrs; i++)
{
string name = Console.ReadLine();
// BigInteger sumscore = BigInteger.Parse(Console.ReadLine());
int sumscore=int.Parse(Console.ReadLine());
for (int letter = 0; letter < name.Length; letter++)
{
int charnmbr = name[letter];
if (charnmbr % 2 == 0)
{
sumscore += charnmbr;
}
else {
sumscore -= charnmbr;
}
}
scorePlayer[i] = sumscore;
players[i] = name;
}
//find winner
int indexwinnner = 0;
for (int i = 1; i < countplrs; i++)
{
if (scorePlayer[i -1] < scorePlayer[i])
indexwinnner = i;
}
//OUTPUT:
Console.WriteLine("The winner is {0} - {1} points"
, players[indexwinnner], scorePlayer[indexwinnner]);
}
}
}
И аз мислех за Dictionary, но тъй като не съм го упражнявала достатъчно реших да попитам ментор по време на изпита - той ми отговори, че дори е препоръчително да НЕ използваме Dictionary, а да намерим друга логика - щеше да е лесно ако го нямаше разделението на четни и нечетни ст-ти от ASCII таблицата, а именно просто връщаш сумата като string. Аз използвах 2 List-a (names и score) и някак я докарах до 70, но сложих сумата в един List и с list.Max(); изкарах максималните ст-ти. Това е добър начин и за някои други задачи, в които не знаеш колко променливи да сравняваш.
Аз реших, че казват "не" използвайте Dictionary ;)
Като за втора задача има различни варианти за решаване. dimo.ivanov, сега видях твоето решение и се убеждавам, че Dictionary-то си е много подходящо в случая.
За мен няма смисъл нито от Dictionary нито от всякакви други колекции, щом в задачата накрая се иска да принтираш един елемент, значи просто няма нужда да запазваме всички елементи. Имаме нужда от 2 променливи, които ни пазят maxScore и playerName. Ето моето решение, без колекции (като изключим string-a разбира се ) http://pastebin.com/6uNjPZ64
Общо взето кой както го кефи. Единият вариант заема памет, другият - процесор. Минало... ;)