Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / помогите с рекурсией / 13 сообщений из 13, страница 1 из 1
01.01.2010, 13:09:35
    #36395445
Wiking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с рекурсией
помогите с рекурсией

имеется последовательность чисел и определенное число

нужно вывести на экран все под-последовательности, сумма которых равна этому числу

н.р

дано:
{2, 4, 6, 0} и нужная сумма 6

результат:

2,4

6

6,0

help
...
Рейтинг: 0 / 0
01.01.2010, 13:16:20
    #36395450
Mozok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с рекурсией
Wiking,

тынц .
...
Рейтинг: 0 / 0
02.01.2010, 07:19:25
    #36395628
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с рекурсией
Wiking,

а зачем здесь рекурсия?
...
Рейтинг: 0 / 0
02.01.2010, 10:51:36
    #36395646
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с рекурсией
Wikingпомогите с рекурсией

имеется последовательность чисел и определенное число
Уточняю. Последовательность ЦЕЛЫХ НЕОТРИЦАТЕЛЬНЫХ чисел.
...
Рейтинг: 0 / 0
02.01.2010, 13:19:50
    #36395698
ZyK_BotaN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с рекурсией
Wiking,

Код: plaintext
1.
2.
3.
func []  0  res = [res]
func [] _ res = []
func (x:xs) n res = (func xs n res) ++ (func xs (n - x) (x:res))

результат:
Код: plaintext
1.
[[ 6 ], [ 0 ,  6 ], [ 4 ,  2 ], [ 0 ,  4 ,  2 ]]
...
Рейтинг: 0 / 0
02.01.2010, 13:22:21
    #36395699
ZyK_BotaN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с рекурсией
ZyK_BotaN,

интерфейс забыл

Код: plaintext
1.
2.
3.
4.
f xs n = func xs n []
    where func []  0  res = [res]
          func [] _ res = []
          func (x:xs) n res = (func xs n res) ++ (func xs (n - x) (x:res))
...
Рейтинг: 0 / 0
02.01.2010, 13:42:41
    #36395710
NextMan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с рекурсией
Wiking...
нужно вывести на экран все под-последовательности, сумма которых равна этому числу
...
Что есть "под-последовательность"?
...
Рейтинг: 0 / 0
02.01.2010, 13:47:59
    #36395713
ZyK_BotaN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с рекурсией
NextMan,

точно, плохо прочитал.
ща перепишу
...
Рейтинг: 0 / 0
02.01.2010, 14:31:42
    #36395745
ZyK_BotaN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с рекурсией
ZyK_BotaN,

Код: plaintext
1.
2.
3.
4.
5.
f xs n = filter (\x -> n == (sum x)) (subsets xs [] [])
    where subsets []  r1 r2 = r1 ++ r2
          subsets (s:ss) r1 r2 = subsets ss r1' r2'
              where r1' = r1 ++ r2
                    r2' = (map ((:) s) ([]:r2))
...
Рейтинг: 0 / 0
02.01.2010, 16:39:38
    #36395797
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с рекурсией
+ Нужно доказать что решение вообще существует.

Пример

Число 8 невозможно отобразить суммой элементов из вектора {15, 3, 2, 1}.
...
Рейтинг: 0 / 0
02.01.2010, 17:05:10
    #36395808
ZyK_BotaN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с рекурсией
mayton,

решением будет пустой список
...
Рейтинг: 0 / 0
02.01.2010, 22:06:21
    #36395946
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с рекурсией
Пускай автор скажет.
...
Рейтинг: 0 / 0
03.01.2010, 01:46:52
    #36396034
Wiking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с рекурсией
спасибо.

Доказывать не нужно, пусть распечатает что есть, даже пустой список.


зачем рекурсия? - просто такое требование было


Спасибо за ответы
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / помогите с рекурсией / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]