Курсов проект - INF296
FN
14050
версия 0.1 от
19.06.2003 г.
1.Текст на задачата; използват се
файлов вход и изход.
2. Програма за решаване на задачата - A.CPP, B.CPP, C.CPP Реализиран
са два метода - рекурсия и динамично оптимиране.
Вариант 1
Вариант 2
Вариант
3
3.Файлов вход и изход;
4.Използван е компилатор Dev-C++ 4.9.6.0.
5.Сложност на алгоритмите:
В общия случай алгоритъма е
със сложност O(n.S). Тя зависи едновременно от броя на монетите n и
от общата им стойност S, и можем да я разглеждаме като полиномиална
относно n. Ако М е максималната стойност на монетата измежду
дадените. Тогава: S≤M.n и n.S≤n².M Тогава
сложността на алгоритъма е от порядъка на O(n²), което е многократно
по - добро от O( ) при варианта с изчерпване. Когато
времето за работа е квадратично, алгоритъма може да се
използва практически само за малки задачи. Когато
n e хиляда, времето за работа е един милион. Когато n се удвоява,
времето
за работа се увеличава четрикратно. Алгоритъма с експоненциално
нарастване
практически няма приложение, а и прилагането на решения с груба сила
не
е много елегантно. Когато n e двайсет, времето за работа е един
милион.
Когато n се удвои, времето за работа се повдига на квадрат.
n = 10
|
0.000001 сек.
|
n = 100
|
0.0001 сек.
|
n = 1000
|
0.01 сек.
|
n = 10000
|
1.071 сек.
|
n = 100000
|
106.543 сек.
|
n = 1000000
|
10663.6 сек.
|
6. Входен файл
file1.inp с тестови
примери; изходен файл file1.out за примерите от
входния файл.
7. Гранични случаи - входен файл
file2.inp, изходен файл
file2.out.
8. Предложение за:
- входен файл
file3.inp за жури за
състезание по програмиране;
- изходен файл
file3.out за примерите от
входния файл;
- контролно време за работа на програмата за
решаване на примерите - под 1 секунда и за трите примера.
*решенията на рекурсивните
програми не са ефективни за входини файлове с повече от един
пример,тъй като за
прекъсване на рекурсивните
обръщения се използва системната функция ( exit(1) ).
Използвана литература:
1."Основи на компютърните алгоритми" - Преслав
Наков
2."Проектиране и анализ на компютърни алгоритми" - Преслав и Светлин
Накови, Панайот Добриков ( ФМИ, СУ )
3."Алгоритми на 'C' ", Том 1 - Робърт Седжуик