Професионална програма
Loading...
+ Нов въпрос
sportsman avatar sportsman 137 Точки

[Exam Problems] Java Basics - Sample Exam - Problem {04} Magic Car Numbers - Моля за помощ!

Здравейте,

много се извинявам ако молбата ми е некоректна, но бих помолил някой от екипа на СофтУни,а също и някой студент дори, да реши 4-та задача от Java Sample Contest в judge системата на СофтУни. Мислих много по нея,но не мога да се сетя за решение. Бих бил благодарен на всякаква помощ, дори някакви малки насоки.

Поздрави.

2
Java Advanced
hristolilov avatar hristolilov 394 Точки

Направо ти пускам решението ми от изпита, далеч е от перфектно, но е 100/100 (На C# е, но е елементарно да се метне на Java).

Magic Car Numbers

1
lostm1nd avatar lostm1nd 121 Точки

Ето и едно решение на Java - тук.

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

2
sportsman avatar sportsman 137 Точки

Благодаря колеги.

0
ZvetanIG avatar ZvetanIG 917 Точки

Ето и още едно решение http://pastebin.com/TUrMm6R1

С 6 вложени цикъла, обхождам всички номера.  проверявам, кой е магически номер и ако отговаря на посоченото тегло увеличавам брояча с 1.

Тъй като не ми трябват номерата работя само с теглата на цифрите и буквите.  Това е възможно защото теглата са уникални за всяка цифра и буква.

В метода isMagicNumber(int key1, int key2, int key3, int key4) използвам map, за да мога по-лесно да преброя различните цифри в номера. Ако мапът е с два елемента това означава, че номера е кандидат за магически. Накрая още с един if филтрирам тези, които не отговарят на магическите номера.

 

1
sportsman avatar sportsman 137 Точки

Благодаря.

 

0
kasskata avatar kasskata 492 Точки

Ще се опитам само да те напътя към отговора. имаш СА a a a a X Y X и Y за мен са 2 цикъла. Въртят буквите,които аз съм използвал само един масив от техните стойности. а а а а - са един цикъл от който се нуждаеш от всяка цифра на това число, а именно (int i = 0;i<=9999;i++)

в него взимаш всички цифри да са ти поотделно и ги сумираш + 40 (идва от буквите CA).

int first = k / 1000 % 10;
int second = k / 100 % 10;
int third = k / 10 % 10;
int forth = k % 10;

От там нататък ти е само if-ове като във всеки If имаш един counter който брой колко пъти отговаря числото на темплейтите а те са в задачата - "CAaaaaXY", "CAabbbXY", "CAaaabXY", "CAaabbXY", "CAababXY" and "CAabbaXY"

накрая отпечатваш countera.  и той трябва да е единственото в отговора ти ,без допълнителни знаци.

Успех и Питай ако има проблеми
1
VenIT avatar VenIT 63 Точки

Ето моето решение на Magic Car Numbers , на java. 100/100 

1
StanDimitroff avatar StanDimitroff 90 Точки

Това е моето решение.Обаче не ми дава повече от 90/100.Някой може ли да ми открие грешката, щото аз не я виждам, а на втория събмит пък ми даде 80/100 и таймлимит на същия код :D 

1
georgimanov avatar georgimanov 107 Точки
100/100 в 20 реда (ако не броим излишните) http://pastebin.com/GFpK5EdY ... преди това ми даваше само TimeLimit, но то бяха switch и 2 метода за калкулиране на теглото.
2