计算最大利润的代码
Code for calculating max profit
最近我在iarc网站上发现了这个问题。
我对这个问题的处理方法是,Ramu必须在某一天交易或什么都不做,因为他只能养1头水牛,如果他有1头,他必须卖掉,如果他没有,他必须买。如果我能计算出所有可能的组合,我就能很容易地确定最高利润。但是我的代码似乎不起作用,它提供的输出比预期的要高一点,有时也会遇到更大的测试用例,在尝试了3天之后,有人能在正确的道路上指导我一点吗?下面是我的代码:#include <iostream>
int bestTrade(int arr[], int size, bool toTrade, int visits, int day) {
if (day < size - 1) {
day = day + 1;
if (visits > 0) {
if (visits % 2 == 0) {
int visitsT = visits - 1;
int trade = bestTrade(arr, size, true, visitsT, day) - arr[day];
int nothing = bestTrade(arr, size, false, visits, day);
if (nothing > trade) {
return nothing;
} else {
return trade;
}
} else {
int visitsT = visits - 1;
int trade = bestTrade(arr, size, true, visitsT, day) + arr[day];
int nothing = bestTrade(arr, size, false, visits, day);
if (nothing > trade) {
return nothing;
} else {
return trade;
}
}
} else {
return 0;
}
} else {
return 0;
}
}
int main(int argc, char const* argv[]) {
int n, k;
std::cin >> n >> k;
int market[n];
for (int i = 0; i < n; i++) {
std::cin >> market[i];
}
k = (k / 2) * 2;
int maxProfitT = bestTrade(market, n, true, k--, 0);
int maxProfitN = bestTrade(market, n, false, k, 0);
if (maxProfitN > maxProfitT) {
std::cout << maxProfitN << std::endl;
} else {
std::cout << maxProfitT << std::endl;
}
return 0;
}
对于与dynamic programming
有关的任何问题,请这样考虑:
如果你知道最多k
交易到(i-1)th
天的最大利润,你能算出最多k
交易到ith
天的最大利润吗?
认为…答案是Yes
!!!!
假设,在(i-1)th
天之前,最多k
笔交易的最大利润是best(k,i-1)
。你需要找出best(k,i)
为任何i<n
。
如果您选择在i-th
天不做任何交易,那么best(k,i)
与best(k,i-1)
相同。如果你想做一个交易,那么best(k,i)
= max(value[i] - value[j] + best[k-1][j]), j从0到i '
所以,最后DP
公式是:
best[k][i] = max(best[k][i-1], max(value[i] - value[j] + best[k-1][j]), j<i
)
对于一个工作代码,你可以看看这里
希望有帮助!!
相关文章:
- 我的字符计数代码计算错误.为什么
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- 计算两个代码块的时间复杂度
- 计算出有多少客户端可以连接到我正在使用的一些tcp服务器代码
- 如果代码包含多个复杂度循环,如何计算复杂度
- 在实现合并排序代码时无法计算所有反转
- 如何在数组类型的模板代码中计算std::size_t
- 为什么这两个相似的代码计算行列式的结果不同?
- 根据计算机上安装的库依赖项编译不同的代码
- 此代码如何计算数字的奇偶校验?
- 代码的最优解,以便它可以执行高达 10^18 的计算
- 交叉和计算,任何人都可以解释代码吗?
- 使用额外的变量使计算更容易理解 - (多少)我减慢了代码的速度?
- 我写了这个简单的代码,应该计算一系列数组元素的最高数量,但结果很奇怪
- 用于计算统一子字符串权重的代码
- 计算在代码中引用函数的次数
- 为什么我的C 代码无法计算整数的最大和最小值
- 我的作业代码计算有误.如何修复
- 代码计算疑难解答c++