Добро пожаловать, гость
:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте :: :: форум ::

Форум работает в режиме архива, только для чтения и поиска.
Архив 2004 Архив 2007 Архив 2013

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.12.2008, 20:05
гость

 
Сообщений: n/a

Помогите пожалуйста!!!! Срочно нужно!!!!
Моя программа работает слишко медленно, помогите пожалуйста ее ускорить!!! как ее можно вообще ускорить? --------------------------------------------------------------------------------
УСЛОВИЕ ЗАДАЧИ:
Заданы целые числа N и M. Необходимо вычислить
величину C(N,M) - число сочетаний из N по M.

Вход
Два числа N и M (0 < N <= 33, 0 <= M <= N). Числа разделены пробелом.

Выход
Величина C(N,M).



Вот мое решение...

#include <iostream.h>
#include <stdio.h>
//---------------------------------------------------------------------------
unsigned long C(int k, int n)
{ if((0 > k) || (n < k))
return 0;
if((1 == n) || (0 == k) || (n+0 == k))
return 1;
return C(k-1, n-1)+C(k, n-1);
}
int main()
{
int n,k;
cout<<"input"<<endl;
cout<<n<<k;
cin >> n >> k;
cout<<"output"<<endl;
cout <<C(k,n);

return 0;
}
  #2  
Старый 25.12.2008, 20:33
гость

 
Сообщений: n/a

Запоминать результаты функции C() в таблице.
Потому что в вашей реализации функция C вызывается очень много раз от одних и тех же аргументов, зачем для них заново считать ответ?

Как-то так:
unsigned long t[40][40];

unsigned long C(int k, int n)
{ if((0 > k) || (n < k))
return 0;
if((1 == n) || (0 == k) || (n+0 == k))
return 1;
if (t[n][k])
return t[n][k];
return t[n][k] = C(k-1, n-1)+C(k, n-1);
}
  #3  
Старый 25.12.2008, 20:51
гость

 
Сообщений: n/a

Спасибо за помощь!!!
Спасибо все получилось!!!
 


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите пожалуйста. гость Реализация, исходники, языки 5 25.12.2008 04:30
Помогите пожалуйста доделать гость Реализация, исходники, языки 1 27.11.2008 22:23
Помогите пожалуйста(( Юлия Реализация, исходники, языки 12 25.11.2008 16:51
Помогите с задачей, пожалуйста! Alexey Математические алгоритмы (другое) 1 18.09.2008 15:51
Помогите пожалуйста!!!оч срочно!!!! Максим Графы 7 03.05.2008 17:56