[Exam Problems] Java Basics - Проблем с Sum Cards - exam 01.6.2014
Здравейте колеги,
Nakov is keen card player and he is now learning a new game. The game uses a standard deck of 52 cards. The card faces are: 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K and A. The cards suits are denoted by the letters S (spades), H (hearts), D (diamonds) and C (clubs). The player is given a hand of cards and he needs to count their sum. Card values are the following: 2 -> 2, 3 -> 3, 4 -> 4, 5 -> 5, 6 -> 6, 7 -> 7, 8 -> 8, 9 -> 9, 10 -> 10, J -> 12, Q -> 13, K -> 14, A -> 15 (the card suits are ignored). When two or more cards of the same face come sequentially, their values are counted twice.
For example, the hand "2C 2H 2D AS 10H 10C 2S KD" has value (2 + 2 + 2) * 2 + 15 + (10 + 10) * 2 + 2 + 14 = 83.
Write a program that takes a hand of cards and counts their sum.
В моето решение решение пренебрегва последния елемент от масива, може ли да ми помогнете с edin на моя код, така че да хваща всички елементи от масивчето.Ето и кода :http://pastebin.com/aVR5h9PF
Поздрави :)
Това ми е ясно проблема ми е ,че пропуска последния елемент, и не мога да се сетя как да го оправя :)
Не го пропуска. Пуснах го на Дебъгера с примера, който си дал и стига до последния елемент, който е Поп (K)
Последният ми тест в judge гърми за лимит за време. Днес ми се случи и на друга задача. Какво толкова слагате в този 10ти тест, че се дъни за времето.
Много странно. В другата задача беше изгърмяло за времето защото вместо брояч, който да увеличавам ако намеря съвпадение и накрая да проверя дали не е все още 0, за да изпечатам No или там каквото трябваше (както се правеше в авторското решение), аз използвах за целта булева променлива, която да е false в началото, ако намеря съвпадение да я направя true и накрая проверявах дали все още не е false, което принципно е същото и не би трябвало да е чак толкова по-бавно. В тази задача с картите проблема се оказа начина по който смятам стойностите. Използвах речник за специалните карти (т.е от J нагоре), в който са записани стойностите на тези карти, като за всяка карта проверявах дали е специална или не и ако е вземам стойността от речника, а ако не е използва директно парстване от стринга тъй като до 10 стойностите съвпадат. Авторското решение директно взема стойностите с един метод при 2ка връща 2 при 3ка 3 и т...н. Нещо като switch case но с if-ве. Нима това е по-бързо.