В настоящее время я работаю над проектом, в котором я пишу динамический c алгоритм и рекурсивный алгоритм для задачи о ранце. Мне нужно сравнить время, необходимое для выполнения каждого алгоритма. Я немного застрял в том, как это сделать .. Вот то, что я пробовал до сих пор, и в настоящее время делаю:
для Ex вот мой динамический c алгоритм:
int dynamic(int value[], int weight[], int n, int w){
// create arrray
//value per weight too optimize
//2d matrix
int matrix[n+1][w+1];
for(int i = 0; i <=n; i++){
for(int x = 0; x<=w; x++){
matrix[i][x] = 0;
}
}
for(int itemIndex = 1; itemIndex<=n; itemIndex++) {
for(int weightIndex = 1; weightIndex<=w; weightIndex++){
int currentValue = matrix[itemIndex - 1][weightIndex];
int itemWeight = weight[itemIndex - 1];
int potentValue = 0;
if(itemWeight <= weightIndex) {
potentValue = value[itemIndex - 1];
int weightLeft = weightIndex - itemWeight;
potentValue += matrix[itemIndex -1][weightLeft];
}
matrix[itemIndex][weightIndex] = max(potentValue, currentValue);
}
}
return matrix[n][w];
}
Тогда у меня есть случайная функция, которая рандомизирует кучу вещей внутри моей программы, поэтому я тоже все время здесь выполняю. Вот как это выглядит:
clock_t StartTime = clock();
recursive(vals, wts, n, w);
clock_t EndTime = clock();
cout << "Time for dynamic: " << (float)(EndTime- StartTime)/ CLOCKS_PER_SEC / << endl;
// recursive(vals, wts, n, w);
Я получаю вывод 0 для каждого алгоритма. Должен ли я вызывать время внутри каждого алгоритма?