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

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

Войти
Регистрация
Восстановить пароль
 
zago-vlad
13 / 8 / 1
Регистрация: 12.01.2010
Сообщений: 106
#1

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

03.12.2011, 18:22. Просмотров 971. Ответов 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++ Разложение числа на цифры
C++ Разложение числа на множители
C++ разложение числа
Разложение на цифры числа C++
C++ Разложение числа по степеням 3

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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     Разложение числа
Ответ Создать тему
Опции темы

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