- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想打印允许您向右或向下移动的矩阵的最小总和。我能够获得成本,但我不确定如何打印所有可能路径中总和最小的路径。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
#define M 3
#define N 3
int findMinCost(int cost[M][N])
{
int T[M][N];
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
T[i][j] = cost[i][j];
if (i == 0 && j > 0)
T[0][j] += T[0][j - 1];
else if (j == 0 && i > 0)
T[i][0] += T[i - 1][0];
else if (i > 0 && j > 0)
T[i][j] += min(T[i - 1][j], T[i][j - 1]);
}
}
return T[M - 1][N - 1];
}
int main()
{
int cost[M][N] =
{
{ 9,-2,10 },
{ 15,23,-10 },
{ 40,16,2 },
};
cout << "The minimum cost is " << findMinCost(cost);
return 0;
}
最佳答案
您可以使用另一个二维数组 std::pair
存储达到最优解的路径索引。
path
存储为达到最佳解决方案所采用的最后路径。 std::pair<int,int> path[M][N]
在你的内部循环中,每次 T[i][j]
被计算,也计算path[i][j]
if (i == 0 && j > 0) {
T[0][j] += T[0][j - 1];
path[0][j] = std::make_pair(0, j - 1);
}
else if (j == 0 && i > 0) {
T[i][0] += T[i - 1][0];
path[i][0] = std::make_pair(i - 1, 0);
}
else if (i > 0 && j > 0) {
if (T[i - 1][j] < T[i][j - 1]) {
T[i][j] += T[i - 1][j];
path[i][j] = std::make_pair(i - 1, j);
} else {
T[i][j] += T[i][j - 1];
path[i][j] = std::make_pair(i, j - 1);
}
}
最后,使用 path
array 使用递归函数重构解如下(也可以转化为迭代解)
void printPath(int i, int j, std::pair<int,int> path[M][N], int cost[M][N])
{
if (!i && !j) {
cout << cost[i][j] << ' ';
return;
}
printPath(path[i][j].first, path[i][j].second, path, cost);
cout << cost[i][j] << ' ';
}
演示:here
关于c++ - 使用动态规划打印矩阵中所有可能路径中总和最小的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55887291/
我正在创建我的第一个 WAR 文件。我一直在试验 ant buildfile 语法,我的 buildfile 的第一部分从我的 Eclipse 项目中获取内容并将其放入 /dist 文件夹中,然后将其
我是一名学习 SQL 和 PHP 的学生,我接到了一项任务,要使用 PHP 和 mySQLi 创建学生反馈表,我真的一直在思考如何为项目设计数据库! 我正在创建一个系统,用户可以在其中登录网页,如果用
这个问题在这里已经有了答案: Is it possbile to test for expected errors when the testee exits with failure using
我目前正在设计和开发一个 Web 应用程序,该应用程序有可能快速增长。我将提供一些一般信息,然后继续我的问题。我会说我是一名中级网络程序员。 以下是一些规范:MySQL - 数据库后端PHP - 用于
我不知何故无法在我的日志解析器应用程序中实现报告功能。 这是我目前所做的: 我正在编写一个应用程序,它读取日志文件并在字符串中搜索可以在用户配置文件中定义的多个正则表达式。对于从配置中解析的每个所谓的
我有兴趣学习如何在多开发团队场景中设计/规划 Web 应用程序开发。 假设“项目经理/负责人”的角色: 成功的 Web 应用程序开发需要哪些“文档”? 需要什么 UML 图,需要什么程度? 在设计/计
table a (t_a): id name last first email state country 0 sklass klass steve
我们建立了一个广泛使用 JQuery UI 的 AJAX 网站。我们有 30 多个自制的 JQuery UI 小部件(动态加载)。我们到处都使用 JQuery native 小部件:对话框、 slid
我是一名优秀的程序员,十分优秀!