我一直在尝试在c++上学习动态编程,这是我的第一个项目(背包问题),请帮助我理解为什么会出现这些错误。
这是我的代码:
#include<bits/stdc++.h>
using namespace std;
#define fastio ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int knap(int n, int wt[], int price[], int W){ // n = number of items; size of array, w = wt available in knapsack
// wt stores weight if items, price:price
// base case
if(n == 0 || W == 0){
return 0;
}
if(wt[n-1] <= W){ // condition for adding item to knapsack (wt of item must be less than space remaining in knapsack)
return max((price[n-1] + knap(n-1, wt[], price[], W - wt[n-1])), knap(n-1, wt[], price[], W)) ; // max wrt recursion from previous element
}
else if(wt[n-1] > W){
return knap(n-1, wt[], price[], W);
}
}
int main(){
fastio
cout<<knap(4, [4, 8, 5, 3], [5, 12, 8, 1], 10);
}
以下是错误:
||=== Build file: "no target" in "no project" (compiler: unknown) ===|
F:\C++\c++\DP\knapsack.cpp||In function 'int knap(int, int*, int*, int)':|
F:\C++\c++\DP\knapsack.cpp|14|error: expected primary-expression before ']' token|
F:\C++\c++\DP\knapsack.cpp|14|error: expected primary-expression before ']' token|
F:\C++\c++\DP\knapsack.cpp|14|error: expected primary-expression before ']' token|
F:\C++\c++\DP\knapsack.cpp|14|error: expected primary-expression before ']' token|
F:\C++\c++\DP\knapsack.cpp|16|error: expected ']' before ')' token|
F:\C++\c++\DP\knapsack.cpp|17|error: expected primary-expression before ']' token|
F:\C++\c++\DP\knapsack.cpp|17|error: expected primary-expression before ']' token|
F:\C++\c++\DP\knapsack.cpp||In function 'int main()':|
F:\C++\c++\DP\knapsack.cpp|25|error: expected identifier before numeric constant|
F:\C++\c++\DP\knapsack.cpp|25|error: expected ']' before ',' token|
F:\C++\c++\DP\knapsack.cpp|25|error: expected '{' before ',' token|
F:\C++\c++\DP\knapsack.cpp||In function 'int main()':|
F:\C++\c++\DP\knapsack.cpp|25|error: expected ')' before ']' token|
||=== Build failed: 11 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|
我刚接触c++,刚从python搬到这里,所以如果可能的话,请解释一下。
发布于 2021-09-04 06:47:06
替换返回语句
return max((price[n-1] + knap(n-1, wt[], price[], W - wt[n-1])), knap(n-1, wt[], price[], W));
包含以下内容
return max((price[n-1] + knap(n-1, wt, price, W - wt[n-1])), knap(n-1, wt, price, W));
在C++中,当我们将数组传递给函数时,我们只使用数组的名称,而不使用数组的实例……
https://stackoverflow.com/questions/67401506
复制相似问题