Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2013, 15:23   #11
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Но! А если нам даны числа 1 2 2 3 (т.е. ДВЕ двойки даны в исходных числах), почему мы не имеем права вывести 2+2 ?
Мы имеем полное право вывести 2+2.

Вот, кажется, проблема решена..
Код:
type
        TSol = array [1..100] of Integer;

var
        n, m : Integer;
        a : array [1..100] of Integer;
procedure Solution (cnt, sum : Integer; b : TSol);
var
        i : Integer;
begin
        if sum = n then  begin
                for i := 1 to cnt do
                        if b[i] <> 0 then
                                Write (b[i], '+');
                WriteLn(#8, ' = ', n)
        end;


        if cnt > m then
                Exit;

        for i := cnt+1 to m do begin
                b[i] := a[i];
                Solution (i, sum + a[i], b);
                b[i] := 0
        end;

end;

var
        b : TSol;
        i : Integer;

begin
        ReadLn (n, m);

        for i := 1 to m do
                Read (a[i]);

        for i := 1 to m do begin
                b[i] := a[i];
                Solution (i, a[i], b);
                b[i] := 0
        end
end.
Кстати, если набраться наглости и сказать что a[i] >= 0, то перебор можно значительно сократить...

P.S. Сергей, а можно Вас попросить объединить эти два поста? По привычке не то жамкнул..

угу. уже объединил...

Последний раз редактировалось Serge_Bliznykov; 23.04.2013 в 15:58.
Poma][a вне форума Ответить с цитированием
Старый 23.04.2013, 16:12   #12
MagAragorn
Пользователь
 
Регистрация: 22.04.2013
Сообщений: 25
По умолчанию

Poma, немного не так.
если ввод
3 3
1 1 1
то вывод 6.
так как единицы-независимые.
Можно представить в виде полоски из клеточек. вводится длина. вводится длина Синей,Красной и Зеленой. Требуется заполнить полоску,не складывая подряд одноцветные отрезки.
MagAragorn вне форума Ответить с цитированием
Старый 23.04.2013, 16:22   #13
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

тыц Или я чего то не понимаю?
Цитата:
то вывод 6.
Именно такой вывод и есть в моем решении.
(Только ideone мою хитрость с delet'ом игнорирует..)
Poma][a вне форума Ответить с цитированием
Старый 23.04.2013, 17:23   #14
MagAragorn
Пользователь
 
Регистрация: 22.04.2013
Сообщений: 25
По умолчанию

Извините, но с таким вводом выводит 1+1+1=3. Я поменял вывод на плюсование счетчика. Все-равно один выводит.
MagAragorn вне форума Ответить с цитированием
Старый 23.04.2013, 19:37   #15
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Извините, но с таким вводом выводит 1+1+1=3.
Тогда я вообще ничего не понимаю.. Что мы должны выводить при исходных данных :
Код:
3 3
1 1 1
Poma][a вне форума Ответить с цитированием
Старый 23.04.2013, 19:48   #16
MagAragorn
Пользователь
 
Регистрация: 22.04.2013
Сообщений: 25
По умолчанию

6
Меняем единицы на цвета
К С З
варианты:
К С З
К З С
С К З
С З К
З К С
З С К
MagAragorn вне форума Ответить с цитированием
Старый 23.04.2013, 19:52   #17
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

А что означает 6 в начале Вашего поста?
Poma][a вне форума Ответить с цитированием
Старый 23.04.2013, 20:11   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
А что означает 6 в начале Вашего поста?
рискну предположить, что 6 - это количество вариантов.

Только я окончательно запутался - как то вдруг задача превратилась в задачу с цветами разного цвета

тогда, программа (которая с числами)
для M=3 N=3
и набора чисел 1 1 1
должна выдать 6 вариантов:
1 + 1 + 1 = 3
1 + 1 + 1 = 3
1 + 1 + 1 = 3
1 + 1 + 1 = 3
1 + 1 + 1 = 3
1 + 1 + 1 = 3
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.04.2013, 20:13   #19
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Хм.. дак это и есть мой ответ..
Ааа.. Мне кажется, я понял, что же хочет партизан-ТС..
В добавок к разложению нужно еще выводить кол-во вариантов? Дак введите (не будем мудрить) глобальную переменную count. И при выполнении условия sum = n , будем инкриментировать этот сщетчик

Последний раз редактировалось Poma][a; 23.04.2013 в 22:08.
Poma][a вне форума Ответить с цитированием
Старый 24.04.2013, 05:07   #20
MagAragorn
Пользователь
 
Регистрация: 22.04.2013
Сообщений: 25
По умолчанию

Да)
Тоесть программа звучит так:
Заполнить полоску из N клеток полосками 3 разных цветов заданной длины, но не ставя полоски одного цвета друг за другом.
MagAragorn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Данное натуральное число N. Используя только элементарные арифметические операции (+, -, *, /) SystemsS Visual C++ 0 06.02.2013 12:43
Данное натуральное число N и действительные, не равны нулю числа a1, ., aN SystemsS Visual C++ 0 06.02.2013 12:42
Дано n вещественных чисел а1, а2,…,аn. Определите число соседств двух чисел разного знака (Паскаль) bambam Помощь студентам 1 29.11.2011 11:36
Определить является ли данное число совершенным.. Паскаль. Karabas Помощь студентам 6 23.12.2008 21:53
Из двух натуральных чисел, составить наибольшее число, сохраняя первоначальную последовательность.Паскаль Omedus Помощь студентам 8 19.11.2007 22:02