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

Прокомментировать код - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сформировать из столбцов матрицы В, не содержащих равных элементов, матрицу С http://www.cyberforum.ru/cpp-beginners/thread441533.html
Напишите, помогите... Разобраться толком не могу Сформировать из столбцов матрицы В, не содержащих равных элементов, матрицу С размером m*k, где k<=n - кол-во таких столбцо. В матрице С вычислить...
C++ Реверс массива Задание такое: Нужно сделать массив из 30 чисел, чтобы он отображался на экране наоборот и по 3 числа в столбик, при этом поменять столбики между собой я так понял вид должен быть: 26 25 24 29 28... http://www.cyberforum.ru/cpp-beginners/thread441530.html
C++ Методы статиеские и обычные
Во многих языках одни и те же действия реализуются как методами, работающими на уровне классов (статические методы), так и методами на уровне экземпляров (обычные методы). Правильно ли считать,...
невычисляет дробовое число C++
хочу написать программу для вычисления суммы ряда 1-1/3+1/5-1/7+1/9... вроде как написал программу, но чото компилятор матюкается немогу понять почему #include "stdafx.h" using namespace std;...
C++ Cколько будет палиндромов в промежутке от 1...9000 при возведении в квадрат? http://www.cyberforum.ru/cpp-beginners/thread441507.html
вопрос на логику: сколько будет палиндромов в промежутке от 1...9000 при возведении в квадрат? Тоесть берем для начала 1. Возводим в квадрат 1*1=1. Вывод - палиндром. Дальше берем 2 и так к 9000. ...
C++ Задача о конвертах и открытках Всем привет! Нужно решить вот эту задачку: Имеется N прямоугольных конвертов и N прямоугольных открыток различных размеров. Можно ли разложить все открытки по конвертам, чтобы в каждом конверте... подробнее

Показать сообщение отдельно
zago-vlad
13 / 8 / 1
Регистрация: 12.01.2010
Сообщений: 106

Прокомментировать код - C++

07.02.2012, 01:38. Просмотров 325. Ответов 0
Метки (Все метки)

Всем привет!

Недавно нашел в интернете код функции для разбиения числа на слагаемые. Код был без комментариев, поэтому я так и не понял сам алгоритм. Прокомментируйте кто-нить (и желательно обьясните суть алгоритма):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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";
   }
}
Заранее спсибо!

Добавлено через 21 час 40 минут
Например, для n=4 прога выведет такое:
1+1+1+1
2+1+1
2+2
3+1
4
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru