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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
Rakaddar
0 / 0 / 0
Регистрация: 23.03.2009
Сообщений: 14
#1

Задача дед мороз (перебор) - C++

23.03.2009, 21:23. Просмотров 1978. Ответов 5
Метки нет (Все метки)

для начала вот задачка:

Подарки Деда Мороза
(Время: 1 сек. Память: 16 Мб Сложность: 27%)

Ириска весит X грамм, мандарин – Y грамм, пряник – Z грамм.

Требуется написать программу, которая определит, сколько различных вариантов подарков весом ровно W грамм может сделать Дед Мороз.
Входные данные

В единственной строке входного файла INPUT.TXT содержится четыре числа X, Y, Z и W (1 ≤ X, Y, Z ≤ 100, 1 ≤ W ≤ 1000).
Выходные данные

Выходной файл OUTPUT.TXT должен содержать одно целое число – количество вариантов подарков.
Пример
INPUT.TXT 10 25 15 40
OUTPUT.TXT 3
легкая задача, да? вот мое решение:

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
//dead moroz
#include <fstream>
#include <iostream>
 
using namespace std;
 
ifstream fin ("input.txt");
ofstream fout ("output.txt");
 
int main()
{
    int X,Y,Z,W,sum=0;
    fin>>X>>Y>>Z>>W;
    for (int i=0;i<=X;i++){
        for (int j=0;j<=Y;j++){
            for (int n=0;n<=Z;n++){
                if ((X*i)+(Y*j)+(Z*n)==W){sum++;}
                }
            }
        }
 
fout<<sum;
 
 
fin.close();
fout.close();
    return 0;
}
ну чего тут не правильно? по тестам не проходит на первом же тесте . объясните, может неправильно понял?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2009, 21:23     Задача дед мороз (перебор)
Посмотрите здесь:

Задача на рекурсивный перебор - C++
В выражении ((((1?2)?3)?4)?5)?6 . Нужно заменить знаки вопроса на знаки +-*/ чтобы в итоге получилось 35. Ну например: 1+2+3*4+5+6=35 ...

Перебор. Задача про ферзей. - C++
На шахматной доске требуется расставить 8 ферзей, что бы ни один ферзь не атаковал другого. Написал программу. Три дня писал). Что вы...

Перебор - C++
Hi.мне нужно часть кода в котором перебирает все значение пример у нас 2 банки(на много литров),и 10 л воды.Нужно сделать все возможние...

Перебор - C++
Ребят, помогите решить две задачи. Занимаюсь программированием уже 6 лет. Но тут в ступор встал. 1 задача: есть массив. из него нужно...

Перебор комбинаций - C++
Доброго времени суток. Нашел в сети картинку - генератор речей. 4 столбика по 6 фраз в каждом. При переборе слева направо получается...

Cудоку перебор - C++
Здравствуйте,мы с товарищем решили написать решалку для судоку,но появилась проблемма,которая как оказалось поставила нас в тупик. ...

перебор значений - C++
Вывести на экран в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр.

Перебор матриц - C++
День добрый. Очень нужна помощь с написанием отдельного фрагмента программы. Задаётся размерность матрицы m, нужно поочерёдно перебирать...

Полный перебор - C++
Дано множество целых чисел. Требуется разбить множество на две части суммы элементов которых равны. Если нельзя провести разбиение, выдать...

Перебор значений - C++
Вывести на экран в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр.

Cделать перебор id-ов - C++
есть ссылка: http//:fafaf.ru/index.php?id=1000 нужно сделать перебор id ов как это замутить? в цикле сделать перебор и...

Перебор комбинаций - C++
Здравствуйте! Возникла такая задача. Дан одномерный массив из N цифр,нужно составить все возможные комбинации чисел из этих цифр(числа...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Monte-Cristo
2787 / 1373 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
23.03.2009, 21:30     Задача дед мороз (перебор) #2
потому что цикл по-моему должен быть таким

C++
1
2
3
4
5
6
7
8
    
    for (int i=0;i<=W;i++){
        for (int j=0;j<=W;j++){
            for (int n=0;n<=W;n++){
                if ((X*i)+(Y*j)+(Z*n)==W){sum++;}
                }
            }
        }
Rakaddar
0 / 0 / 0
Регистрация: 23.03.2009
Сообщений: 14
23.03.2009, 21:34  [ТС]     Задача дед мороз (перебор) #3
1 ≤ X, Y, Z ≤ 100
понял, судя по этому надо было сделать до 100. спс

Добавлено через 1 минуту 36 секунд
все время забываю про ограничения. спс всем. там еще надо с 1, а не с 0
Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
23.03.2009, 21:53     Задача дед мороз (перебор) #4
C++
1
2
3
4
5
6
7
8
9
    
int temp_X,temp_Y;
    for (int i=0;i<=W/X;i++){
        for (int j=0;j<=(W-(temp_X=X*i))/Y;j++){
            for (int n=0;n<=(W-temp_X-(temp_Y=Y*j))/Z;n++){
                if (temp_X+temp_Y+(Z*n)==W){sum++;}
                }
            }
        }
Monte-Cristo
2787 / 1373 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
23.03.2009, 21:54     Задача дед мороз (перебор) #5
да нет.. если можно набрать только одних падарков (например ирисок)
тогда с 0 циклы должны начинаться..

а.. ну следую твоим условиям.. тогда вот так вот

C++
1
2
3
4
5
6
7
    for (int i=1;i<=W;i++){
        for (int j=0;j<=W;j++){
            for (int n=0;n<=100;n++){
                if ((X*i)+(Y*j)+(Z*n)==W){sum++;}
                }
            }
        }
Rakaddar
0 / 0 / 0
Регистрация: 23.03.2009
Сообщений: 14
23.03.2009, 22:07  [ТС]     Задача дед мороз (перебор) #6
спс всем за помощь. Шоб прога прошла таймлимит я сделал квадратную сложность(два фора)
вот кон.вариант
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
//dead moroz
#include <fstream>
#include <iostream>
 
using namespace std;
 
ifstream fin ("input.txt");
ofstream fout ("output.txt");
 
int main()
{
    int X,Y,Z,W,sum=0;
    fin>>X>>Y>>Z>>W;
 
int temp_X,temp_Y,temp_Z;
    for (int i=0;i<=W/X;i++){
        for (int j=0;j<=(W-(temp_X=X*i))/Y;j++){
            temp_Y=Y*j;
            temp_Z=W-(temp_X+temp_Y);
            if(temp_Z%Z==0){sum++;}
            }
        }
 
fout<<sum;
 
 
fin.close();
fout.close();
    return 0;
}
Добавлено через 57 секунд
а на счет ограничения 1 или 0, то это хз, условия неправильное. начаиная с нуля все тесты проходятся
Yandex
Объявления
23.03.2009, 22:07     Задача дед мороз (перебор)
Ответ Создать тему
Опции темы

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