Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 08.10.2016
Сообщений: 10
1

Определить, сможет ли герой пройти на следующий уровень игры (победить всех драконов, не умирая ни разу)

27.11.2016, 21:19. Показов 3340. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Кирито застрял на очередном уровне MMORPG, в которую он играет. Чтобы пройти игру дальше, ему нужно победить всех n драконов, которые живут на этом уровне. Как Кирито, так и драконы обладают силой, которая выражается целым числом. В схватке между двумя противниками исход схватки определяется их силой. Изначально сила Кирито равна s.

Если Кирито вступает в схватку с i-ым (1 ≤ i ≤ n) драконом и его сила не больше, чем сила этого дракона xi, то Кирито проигрывает схватку и умирает. Если же сила Кирито больше, чем сила дракона, то он побеждает дракона и получает бонус — его сила увеличивается на yi.

Кирито может сражаться с драконами в произвольном порядке. Определите, сможет ли он пройти на следующий уровень игры, то есть победить всех драконов, не умирая ни разу.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2016, 21:19
Ответы с готовыми решениями:

Определить, сможет ли игрок победить за один ход, если пошлёт в бой одновременно всех своих существ
Макс участвует в турнире по компьютерной игре Hearthstone. Цель игры довольно проста: имея в...

Определить сможет ли белый слон одним ходом пройти на поле
Поле шахматной доски определяется парой натуральных целых чисел, каждое из которых не превосходит...

Сможет ли шар радиуса R пройти
Сможет ли шар радиуса R пройти в ромбообразное отверстие со стороной P и острым углом Q?

Сможет ли шар пройти в отверстие?
Сможет ли шар радиуса R пройти в ромбообразное отверстие со стороной P и острым углом Q?

2
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
28.11.2016, 10:59 2
Лучший ответ Сообщение было отмечено Mitya55 как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
//Кирито застрял на очередном уровне MMORPG, в которую он играет.
//Чтобы пройти игру дальше, ему нужно победить всех n драконов,
//которые живут на этом уровне. Как Кирито, так и драконы обладают силой,
//которая выражается целым числом. В схватке между двумя противниками
//исход схватки определяется их силой. Изначально сила Кирито равна s.
 
//Если Кирито вступает в схватку с i-ым (1 ≤ i ≤ n) драконом и его сила
//не больше, чем сила этого дракона xi, то Кирито проигрывает схватку и
//умирает. Если же сила Кирито больше, чем сила дракона, то он побеждает
//дракона и получает бонус — его сила увеличивается на yi.
 
//Кирито может сражаться с драконами в произвольном порядке. Определите,
//сможет ли он пройти на следующий уровень игры, то есть победить всех
//драконов, не умирая ни разу.
 
//ВХОДНЫЕ ДАННЫЕ
//Первая строка содержит два целых числа s и n (1 ≤ s ≤ 104, 1 ≤ n ≤ 103),
//разделенные пробелом. Далее следуют n строк: i-ая строка содержит целые
//числа xi и yi (1 ≤ xi ≤ 104, 0 ≤ yi ≤ 104), разделенные пробелом — силу
//i-го дракона и бонус за победу над ним.
 
//ВЫХОДНЫЕ ДАННЫЕ
//В единственной строке выведите «YES» (без кавычек), если Кирито сможет
//пройти на следующий уровень, и «NO» (без кавычек), если не сможет.
 
//ПРИМЕРЫ
//Входные данные
//2 2
//1 99
//100 0
 
//Выходные данные
//YES
 
//Входные данные
//10 1
//100 100
 
//Выходные данные
//NO
 
//ПРИМЕЧАНИЕ
//В первом примере сила Кирито изначально равна 2. Поскольку сила первого
//дракона меньше 2, то Кирито может с ним сразиться и победить его.
//После этого он получает бонус и его сила возрастает до 2 + 99 = 101.
//Теперь он может победить второго дракона и пройти на следующий уровень.
//Во втором примере сила Кирито слишком мала, чтобы он мог сразиться с
//единственным драконом и победить.
///////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <vector>
///////////////////////////////////////////////////////////////////////////////
typedef std::vector     < int   >   T_int_values;
///////////////////////////////////////////////////////////////////////////////
bool    wins
    (
        int                 strength,
        T_int_values    &   dragons_s,
        T_int_values    &   dragons_bonuses
    )
{
    while   (
                !dragons_s.empty()
            )
    {
        bool    amended     {};
        int     bonus_best  {};
        int     i_best      {};
 
        for( size_t  i{}; i < dragons_s.size(); ++i )
        {
            if  (
                        strength    >   dragons_s[i]
 
                    &&  (
                                i                   ==  0
                            ||  dragons_bonuses[i]  >   bonus_best
                        )
                )
            {
                bonus_best  =   dragons_bonuses[i];
                i_best      =   i;
                amended     =   true;
            }
        }//for
 
        if( !amended )
        {
            return  false;
        }
 
        strength    +=  bonus_best;
 
        dragons_s.erase         (
                                    dragons_s.begin         ()  +   i_best
                                );
 
        dragons_bonuses.erase   (
                                    dragons_bonuses.begin   ()  +   i_best
                                );
    }//while
 
    return  true;
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    int     strength    {};
    int     n           {};
 
    std::cin    >>  strength
                >>  n;
 
    T_int_values    dragons_s           (n);
    T_int_values    dragons_bonuses     (n);
 
    for( int  i{}; i < n; ++i )
    {
        std::cin    >>  dragons_s           [i]
                    >>  dragons_bonuses     [i];
    }//for
 
    std::cout   <<  (
                        wins    (
                                    strength,
                                    dragons_s,
                                    dragons_bonuses
                                )
                            ?   "YES"
                            :   "NO"
                    )
 
                <<  std::endl;
}
2
sourcerer
28.11.2016, 11:50     Определить, сможет ли герой пройти на следующий уровень игры (победить всех драконов, не умирая ни разу)
  #3
 Комментарий модератора 
Mitya55, пожалуйста, прочитайте правила форума.
Особое внимание обратите на пункт 4.3 (порядок именования тем).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2016, 11:50

Пройти уровень, головоломка
Передираю уровни для игры. Для открытия уровня нужно пройти предыдущий. Дошел до 14 и кажется что...

Просчитать сможет ли параллелепипед пройти через стену
есть стена в которой отверстие в виде прямоугольника размеры отверстия висота(a) ширина(b) ...

Можно ли пройти по графу ни разу не побывав дважды в одной вершине
нужен алгоритм который покажет, можно ли пройти по графу ни разу не побывав дважды в одной вершине.

Заставить коня пройти по всем клеткам шахматной доски по одному разу
Вообщем, условие задачи сводится к тому, что конь ходит по каждой клетке шахматной доски только...

Сможет ли шар радиуса R пройти в ромбообразное отверстие со стороной P и острым углом Q?
Сможет ли шар радиуса R пройти в ромбообразное отверстие со стороной P и острым углом Q?

Переход на следующий уровень
Добрый день! Подскажите как решить следующую задачу. создаю игру из нескольких уровней. Игрок...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru