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

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

Восстановить пароль Регистрация
 
zago-vlad
13 / 8 / 1
Регистрация: 12.01.2010
Сообщений: 106
07.02.2012, 01:38     Прокомментировать код #1
Всем привет!

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

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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2012, 01:38     Прокомментировать код
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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