Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Melvil
47 / 46 / 13
Регистрация: 20.05.2015
Сообщений: 251
#1

Турист ( найти ошибку ). Вариант задачи о рюкзаке - C++

09.07.2015, 20:21. Просмотров 492. Ответов 5
Метки нет (Все метки)

Всем привет, решал задачу, но всё-таки где-то допустил ошибку, подскажите где. Спасибо.

Кликните здесь для просмотра всего текста
Гена собирается на туристический слет учеников своей школы. В своем классе он был назначен ответственным за палатки. У себя дома он нашел 3 палатки: первая из них весит a1 килограмм и вмещает b1 человек, вторая весит a2 килограмм и вмещает b2 человек, третья весит a3 килограмм и вмещает b3 человек.

В классе Гены K человек. Выясните, может ли он выбрать палатки так, чтобы в них все могли поместиться. При этом учитывайте, что выбранные палатки должны суммарно весить не более W килограмм.

Входные данные

Первая строка входного файла INPUT.TXT содержит два целых числа: K и W (1 <= K <= 15, 1 <= W <= 30). Вторая строка содержит шесть целых чисел: a1, b1, a2, b2, a3, b3 (1 <= a1, a2, a3 <= 10, 1 <= b1, b2, b3 <= 15).

Выходные данные

В выходной файл OUTPUT.TXT выведите YES, если палатки указанным образом выбрать можно, и NO в противном случае.


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
#include <iostream>
using namespace std;
int K, W, a1, b1, a2, b2, a3, b3;
void check()
{
    if (b1 + b2 >= K && a1 + a2 <= W)
    {
            cout << "YES" << endl;
            exit(0);
    }
    else if (b1 + b3 >= K && a1 + a3 <= W)
    {
            cout << "YES" << endl;
            exit(0);
    }
    else if (b2 + b3 >= K && a2 + a3 <= W)
    {   
            cout << "YES" << endl;
            exit(0);
    }
    else if (b1 + b2 + b3 >= K && a1 + a2 + a3 <= W)
    {   
            cout << "YES" << endl;
            exit(0);
    }
}
int main()
{
    cin >> K >> W;
    cin >> a1 >> b1 >> a2 >> b2 >> a3 >> b3;
    if (b1 + b2 + b3 >= K)
    {
        check();
    }
        cout << "NO" << endl;
        return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2015, 20:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Турист ( найти ошибку ). Вариант задачи о рюкзаке (C++):

Наивный алгоритм для задачи о рюкзаке - C++
Всем привет помогите написать программу о рюкзаке c с помощью наивного алгоритма. Я начал, а дальше не совсем понимаю, что сделать нужно....

Разъяснение алгоритмов задачи о рюкзаке для новичков - C++
Есть несколько алгоритмов решения задачи о рюкзаке. Не могли бы вы написать комментарии к ним объясняющие какая процедура для чего нужна?...

Нужно решение задачи об ограниченном рюкзаке разными методами - C++
Всем привет!!!может кто-нибудь помочь кодом,решение задачи об ограниченном рюкзаке разными методами?очень надо:(

найти ошибку в решении задачи! - C++
Условие: Дано натуральное число n. Вычислить: 1 + 2 + 4 + 8 + … + 2n. не могу понять,как в цикле фо задать так,что бы в формуле...

Найти максимальный вес картошки, который можно унести в рюкзаке - C++
Найдите максимальный вес картошки, который можно унести в рюкзаке вместительностью s, если есть n картошин с заданными весами. Входные...

Найти ошибку в решении задачи "Шифровка" (acmp) - C++
#include &lt;stdio.h&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;cstdio&gt; #include &lt;algorithm&gt; #include &lt;cstring&gt; #include...

5
Рыжий Лис
Просто Лис
346 / 271 / 80
Регистрация: 17.05.2012
Сообщений: 1,116
Записей в блоге: 4
09.07.2015, 20:27 #2
Хм, а если, например, все люди влезут в одну палатку?
1
Sn1p3rOk
281 / 168 / 66
Регистрация: 19.04.2014
Сообщений: 1,083
Завершенные тесты: 2
09.07.2015, 20:29 #3
Цитата Сообщение от Melvil Посмотреть сообщение
решал задачу, но всё-таки где-то допустил ошибку, подскажите где. Спасибо.
Это снова я. Для начала что должно вывести. И почему вы считаете, что здесь ошибка.

Добавлено через 1 минуту
У вас в main по любому должен быть else иначе после выполнения check() на экране получите NO.
0
Melvil
47 / 46 / 13
Регистрация: 20.05.2015
Сообщений: 251
09.07.2015, 20:30  [ТС] #4
Цитата Сообщение от Sn1p3rOk Посмотреть сообщение
У вас в main по любому должен быть else иначе после выполнения check() на экране получите NO.
Если будет YES, то сработает exit(0). Но вот про 1 палатку я не подумал.
0
Рыжий Лис
Просто Лис
346 / 271 / 80
Регистрация: 17.05.2012
Сообщений: 1,116
Записей в блоге: 4
09.07.2015, 20:31 #5
Следующий тест, программа скорей всего не пройдёт:
Код
1 10
3 10 15 20 15 30
1
Melvil
47 / 46 / 13
Регистрация: 20.05.2015
Сообщений: 251
09.07.2015, 21:11  [ТС] #6
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Следующий тест, программа скорей всего не пройдёт:
Вы правы, буду корректировать.

Добавлено через 13 минут
Все тесты пройдены, всем спасибо. Код:

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
#include <iostream>
using namespace std;
int K, W, a1, b1, a2, b2, a3, b3;
void check()
{
    if (b1 + b2 >= K && a1 + a2 <= W)
    {
            cout << "YES" << endl;
            exit(0);
    }
    else if (b1 + b3 >= K && a1 + a3 <= W)
    {
            cout << "YES" << endl;
            exit(0);
    }
    else if (b2 + b3 >= K && a2 + a3 <= W)
    {   
            cout << "YES" << endl;
            exit(0);
    }
    else if (b1 + b2 + b3 >= K && a1 + a2 + a3 <= W)
    {   
            cout << "YES" << endl;
            exit(0);
    }
    else if (b1 >= K && a1 <= W)
    {
        cout << "YES" << endl;
        exit(0);
    }
    else if (b2 >= K && a2 <= W)
    {
        cout << "YES" << endl;
        exit(0);
    }
    else if (b3 >= K && a3 <= W)
    {
        cout << "YES" << endl;
        exit(0);
    }
 
}
int main()
{
    cin >> K >> W;
    cin >> a1 >> b1 >> a2 >> b2 >> a3 >> b3;
    if (b1 + b2 + b3 >= K)
    {
        check();
    }
        cout << "NO" << endl;
        return 0;
}
0
09.07.2015, 21:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2015, 21:11
Привет! Вот еще темы с ответами:

Выбрать вариант не имеющий ошибки и к каждому написать почему этот вариант правильный/неправильный - C++
Прошу помогите, я плохо понимаю c++, да и простите если не в той теме, в общем, дали задание: Выбрать вариант не имеющий ошибки и к...

Как бы вы написали кусок программы, Вариант 1 или Вариант 2? - C++
Как бы вы написали кусок программы Вариант 1 или Вариант 2 ? Вариант 1. double Value0 = value0 / 100; switch (i){ case 1: ...

Турист за день прошел .Задача - C++
Турист за день прошел А км. До обеда он шел t часов и прошел 20 км. Еще t2 часа он шел после обеда. Когда скорость туриста была выше: до...

В файле хранятся города и расстояния между ними. В каком порядке должен посетить их турист? - C++
В файле хранятся города и расстояния между ними (города и расстояния между ними приведены ниже), В каком порядке должен посетить их турист,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru