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

Задача от минал изпит

Здравейте в judge ми дава 50 от 50 тази задача. Някой има ли идея защо ? 

 

https://pastebin.com/DT1FMXSK

 

Другото ми решение което също ми дава 50/50 

https://pastebin.com/0ZkhHsAt

 

като и двете ми дават верни резултати от дадените входове.

 

Условие на задачата : https://softuni.bg/downloads/svn/programming-basics-v4/course-directories/september-2019/2019-05/Exam/06.%20Name%20Game.pdf

 

judge : https://judge.softuni.bg/Contests/Practice/Index/1745#10      06.Name Game

 

Тагове:
0
Programming Basics with Java 31/10/2019 22:18:54
hm6566 avatar hm6566 51 Точки

Здравей,


Вторият for-loop заедно с прилежащите му променливи е излишен. Нужни са ти просто един стринг и един инт, в които да пазиш и ъпдейтваш информацията за най-добрия резултат постигнат до момента. Така и принтирането накрая е много по-просто - когато while-loop-ът приключи принтираш най-добрия резултат и те така. ;)


Забележи, че в if-a, който проверява дали резултатът на поредния участник е най-добър до момента има и "=". Това е защото в условието пише "в случай, че двама играчи имат равен брой точки, печели този, който втори е достигнал резултата". Ако беше обратното, проверката трябваше да е без "=".


Успех!

 

 

        String input = scan.nextLine();
        int maxPoints = 0;
        int pointsSecondGuy = 0;
        String winner = " ";
        String secondName = " ";
 
        while (!input.equals("Stop")) {
        int points = 0;
 
            for (int i = 0; i < input.length(); i++) {
                int num = Integer.parseInt(scan.nextLine());
                if (num == input.charAt(i)) {
                    points += 10;
                } else {
                    points += 2;
                }
                firstName = input;
            }
             if (points >= maxPoints) {
                maxPoints = points;
                winner = input;
            }
            input = scan.nextLine();
 
            for (int i = 0; i < input.length(); i++) {
                int num = Integer.parseInt(scan.nextLine());
                if (num == input.charAt(i)) {
                    pointsSecondGuy += 10;
                } else {
                    pointsSecondGuy += 2;
                }
            secondName = input;
 
            }
 
            input = scan.nextLine();
 
        }
        if (points > pointsSecondGuy) {
            System.out.printf("The winner is %s with %d points!", winner, maxPoints);
        } else if (points < pointsSecondGuy) {
            System.out.printf("The winner is %s with %d points!",secondName,pointsSecondGuy);
        } else if (points == pointsSecondGuy) {
            System.out.printf("The winner is %s with %d points!",secondName,pointsSecondGuy);
        }

1
31/10/2019 23:03:23
amanis avatar amanis 3 Точки

Благодаря за бързият и описателен отговор!!!

Доста по кратко е така да :)

0