Convert C++ to Matlab Code
显示 更早的评论
Can anyone help me convert the C++ code below to Matlab code?
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int N = 8;
const int L = 3;
const int C = 150;
const int MULTIPLIER = 10;
int profit[N + 1][C + 1];
int PV[N + 1][L + 1];
int benefit[N + 1][L + 1];
int calculate(int index, int capacity){
if(index == 0 || capacity == 0) return 0;
if(profit[index][capacity] != -1) return profit[index][capacity];
int ans = 0;
ans = max(ans, calculate(index - 1, capacity));
if(PV[index][1] < capacity) {
ans = max(ans, calculate(index - 1, capacity - PV[index][1]) + benefit[index][1]);
}
if(PV[index][2] < capacity) {
ans = max(ans, calculate(index - 1, capacity - PV[index][2]) + benefit[index][2]);
}
if(PV[index][3] < capacity) {
ans = max(ans, calculate(index - 1, capacity - PV[index][3]) + benefit[index][3]);
}
profit[index][capacity] = ans;
return profit[index][capacity];
}
int n, true_cap;
int main(){
memset(profit, -1, sizeof profit);
scanf("%d%d", &n, &true_cap);
for(int i = 1; i <= n; i++){
for(int j = 1; j <= L; ++j){
double pv;
scanf("%lf%d", &pv, &benefit[i][j]);
PV[i][j] = int(pv * MULTIPLIER);
}
}
int cap = true_cap * MULTIPLIER;
printf("Profit Maksimum: %d\n", calculate(n, cap));
return 0;
}
1 个评论
Guillaume
2019-3-11
Which part of the C++ code don't you understand? Don't you have documentation for the code that tells you what it does?
More importantly, does this code actually work? I can already see that it has no check for buffer overflows so if the user specify too large a n (anything greater than 7!) the program will at best crash, at worse be very nefarious. In addition, depending on the capacity input, the complexity of calculate could be O(e^n), spending much of that time calculating values that would not be used. It does not look to me that this code has been thought out properly.
回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Call C++ from MATLAB 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!