Мой комфортный язык - Java, но недавно я решил изучить синтаксис C ++.
int ks(int Wt[], int Va[], int N, int totW){
if(N==0){
return 0;
}
int V[N+1][totW+1];
for(int i = 0; i < N+1; i++){
V[i][0] = 0; // fill first row with 0's
}
for(int i = 0; i < totW+1; i++){
V[0][i] = 0; // fill first column with 0's
}
for(int i = 1; i < N+1; i++){
for(int j = 0; j < totW+1; j++){
if(Wt[i] <= j) {
V[i][j] = std::max(V[i-1][j], Va[i]+V[i-1, j- Wt[i]]);
} else {
V[i][j] = V[i-1][j];
}
}
}
return V[N][totW];
}
Это моя реализация рюкзака 01.Тем не менее, я получаю сообщение об ошибке:
V[i][j] = std::max(V[i-1][j], Va[i]+V[i-1, j- Wt[i]]);
Ошибка гласит:
ни один экземпляр перегруженной функции "std :: max" не соответствует списку аргументов - аргументтипы: (int, int *)
Мой вопрос: почему Va[i]
возвращает указатель, тогда как V[i-1][j]
нет?