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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Расчет краски на лабиринт http://www.cyberforum.ru/cpp-beginners/thread342764.html
Условие задачи тут #include <iostream> using namespace std; void paint(int i, int j) { if (a=='.') { a='$'; paint(i+1,j); paint(i-1,j); paint(i,j+1);
C++ Создание нескольких стеков //--------------------------------------------------------------------------- #pragma hdrstop #include <tchar.h> #include <stdlib.h> #include <iostream.h> #include <dos.h>... http://www.cyberforum.ru/cpp-beginners/thread342698.html
C++ Сохранение матриц больших размеров в типизированный файл
Проблема: есть большой двумерный массив (double). Пытаюсь сохранить его в типизированный файл (а затем считать в другой массив). В файл сохраняется только некоторая часть (до 58 элемента, в частном...
два ++ C++
Что означает "++" что ето за операция в С++Builder очень надо узнать Напишите кто нибудь.
C++ Тетрис и многопоточность http://www.cyberforum.ru/cpp-beginners/thread342646.html
Здравствуйте. Взялся я за тетрис, немного написал, а потом понял, что мне нужны два потока. Вот зачем: у меня игровое поле — двумерный массив . Фигура представленна массивом . В то время, как один...
C++ Подскажите, как должно выглядеть это задание? Разработайте приложение rle.exe, выполняющее RLE-компрессию бинарных файлов с сильно разреженным содержимым, а также декомпрессию упакованных ею файлов. Необходимо реализовать следующий принцип... подробнее

Показать сообщение отдельно
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
18.08.2011, 08:43
Dani, это хорошо или плохо по сравнению с другими вариантами (так как вы тестируете на время)?
И заметьте, используется всего одно условие, никаких лишних отсечений, пробегаем только необходимые слагаемые.

Добавлено через 21 минуту
А если просто требуется подсчитать количество, то код совсем компактным стает:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#define MIN(x, y)  ((x) < (y) ? (x) : (y))
 
void Partition(int n, int high, int *count)
{
   if (n)
      for (int i = 1; i <= high; i++)
          Partition(n - i, MIN(i, n - i), count);
   else
      (*count)++;
}
 
int main()
{
   int n, count = 0;
   std::cin >> n;
   Partition(n, n - 1, &count);
   std::cout << count;
   return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru