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

Разложение числа - C++

Восстановить пароль Регистрация
 
zago-vlad
13 / 8 / 1
Регистрация: 12.01.2010
Сообщений: 106
03.12.2011, 18:22     Разложение числа #1
Всем привет!

Есть некое число N и массив arr[k] (k - размер массива).
Нужно написать программу, которая выведет на экран все возможные варианты разложения числа N числами из массива arr.

Например, если N=5, а в массиве arr лежат числа 1,2,3, то программа должна вывести следующее:

2+3
1+1+3
2+1+1+1
1+2+2
1+1+1+1+1

Порядок вывода вариантов не важен.
Изменение порядка разложения не считаются разными вариантами. Например, варианты 2+3 и 3+2 считаются одинаковыми и программа должна вывести только один из них.

Заранее ОГРОМНОЕ спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2011, 18:22     Разложение числа
Посмотрите здесь:

Разложение Натурального числа C++
C++ Разложение числа
C++ Разложение натурального числа
Разложение числа по цифрам C++
C++ Разложение натурального числа
Разложение числа на слагаемые C++
C++ Разложение числа на цифры
C++ разложение числа

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
03.12.2011, 19:55     Разложение числа #2
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
#include <iostream>
#define MIN(x, y)  ((x) < (y) ? (x) : (y))
long a[1000];
 
void Partition(long n, long high, long pos)
{
   long i;
   if (n > 0)
   {
       for (i = 1; i <= high; i++)
       {
          a[pos] = i;
          Partition(n - i, MIN(i, n - i), pos + 1);
       }
   }
   else
   {
       for (i = 0; i < pos - 1;  i++)
          std::cout << a[i] << "+";
       std::cout << a[i] << "\n";
   }
}
 
int main()
{
    long n;
    std::cin >> n;
    Partition(n, n - 1, 0);
    return 0;
}
Yandex
Объявления
03.12.2011, 19:55     Разложение числа
Ответ Создать тему
Опции темы

Текущее время: 19:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru