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

Оптимальное заполнение или "Халява" - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ дата http://www.cyberforum.ru/cpp-beginners/thread435250.html
Ввести (с клавиатуры) дату в формате ДД.ММ,ГГГГ и вывести на экран дату следующего дня (используются операторы *Условия выбора и циклы*-по заданию) заранее спасибо очень тяжело Си дается
C++ Аварийное завершение... почему? Код рабочий, но если элементов больше 4, тогда программа аварийно завершает работу, почему? #include <iostream> using namespace std; string Read(string Mass, int size){for(int i=0;i<size;i++){cout<<">"<<Mass<<endl;}} int main() { //string List={"one","two","three","four","five"}; string List={"one","two","three","four"}; http://www.cyberforum.ru/cpp-beginners/thread435243.html
C++ Решение задачи
Как решить задачу: поменять местами второй четный со вторым нечетным в одномерном массиве
C++ Поиск k-ого наименьшего элемента
Друзья есть код на паскале, нужно переписать на с++. Это алгоритм поиска к-го наименьшего элемента. У меня получается криво, с ошибками. procedure Find(k: integer); var L,R,i,j: integer; w,x: integer; begin L:=1; R:=N; while L<R-1 do begin
C++ Замена слов в строке http://www.cyberforum.ru/cpp-beginners/thread435213.html
Добрый вечер. Помогите, пожалуйста советом или кодом: требуется полученную строку изменить так, чтобы первое и среднее слово поменялись местами. void f(char *s) { int len=strlen(s); int na4slovo1=0,konezslovo1=0,na4slovo2=0,konezslovo2=0,kolslov=0; for(int k=0;k<len;k++) { if(s==' ' && s!=' ') //нашли количество слов kolslov++;
C++ зеркальное отображение в С Дана задача сделать зеркальное отображение двумерного массива M*N Нужно поменять 1-ый с последним, 2-ой с предпоследним и т.д. подробнее

Показать сообщение отдельно
Cool-T
20 / 13 / 1
Регистрация: 17.12.2010
Сообщений: 34
25.01.2012, 22:16     Оптимальное заполнение или "Халява"
Наткнулся на задачку с ********.
Текст задачи
Гриша очень любит газировку PupsiCola. Однажды он узнал, что, собрав несколько крышек со звездочками, можно получить футболку. Гриша нашел A крышек с одной звездочкой, B крышек с двумя звездочками и C крышек с тремя звездочками. На футболку можно обменять набор крышек, общее количество звездочек на которых не меньше K.

Помогите Грише узнать, сколько футболок он может получить.

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

Входной файл INPUT.TXT содержит целые числа A, B, C и K (0 ≤ A, B, C ≤ 100, 1 ≤ K ≤ 1000).

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

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


Вроде не сложно. Я начал решать задачу думая мол так : чем оптимальней заполнять k тем больше футболок получу на выходе. Как мне кажется, оптимальным будет начинать с трехзвездочных крышек, продолжая двухзвездочными и заканчивая однозвездочными, отдавая так, чтобы их сумма как можно реже превышала k.
Вроде бы все замечательно, я проверил с кучей вариантов из головы свой код, с ними все работает должным образом. Но тем не менее не прохожу проверку "Тест 3" на сайте.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
while (k<=a+2*b+3*c)   // Пока крышек хватает на футболки
    {
        int o=k;             // o - остаток
        while(o>0)
        {       
            if (c && (o > 2 || !(a+b)))  // Отдать трёхзвездочную пробку только если
                {o-=3;c--;}     // остаток больше двух или остальные пробки кончились.
                        else
            if (b && (o > 1 || !a))      // --//-- для двухзвездочных
                {o-=2;b--;} 
                        else
            if(a && o> 0)                 // добить "k" единичками.
                {o-=1; a--;}
        }
        p++;
    }
Ошибка в подходе к решению или в его реализации?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru