逃难之旅(爱思创算法三)(期中测试)

前言:

这篇文章还是是为了帮助一些

像我这样的菜鸟

找到简单的题解

我把期中测试的题全写成题解帮助他人

问题描述:

老师的 “谆谆教诲” :no zuo no die why you try, you try you die no yi wai (介4神马东东~~)

奥特曼过于嚣张了,引来了小怪兽们的集体围攻。奥特曼只好释放终极大招——打不过就跑,开始了 “幸福” 的逃难之旅,奈何仇恨太大,小怪兽们仍穷追不舍。

奥特曼来到了一处必经之地,是一个 ​ 的矩阵,每一个 ​ 的格子上都标有一个正整数,是奥特曼通过这个格子必须要支付的过路费。奥特曼必须从 ​ 的位置走到 ​ 的位置,才算安全通过。

注:

​ 时间不等人,奥特曼想快速地通过矩阵,所以不能走回头路,每次只能向下或向右走一格。

​ 奥特曼不能随便花钱,毕竟后面的逃难之路上可能还要花钱。因此,奥特曼想请你帮他算一下,他通过这个矩阵的最少费用。

输入格式

第一行两个整数 ​ 和 ​ 。

接下来 ​ 行,每行有 ​ 个正整数 ​ ,为通过当前格子所需的费用。

输出格式

一行一个数,为奥特曼需要支付的费用。

样例输入

4 3
4 8 7
9 4 7
1 5 2
2 8 7

样例输出

28

问题解析:

凹凸曼太逊了

这道题有点像淘宝之旅

需要把max改为min

再注意边界

c++ 淘宝之旅题解(爱思创)_吾乃狙击神蛐的博客-CSDN博客

完整代码:

#include <bits/stdc++.h>
using namespace std;
int a[1001][1001],f[1001][1001];
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			cin>>a[i][j];
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(i-1!=0 || j-1!=0)
				f[i][j]=min(f[i-1][j],f[i][j-1])+a[i][j];//考虑边界
			if(i-1==0)
				f[i][j]=f[i][j-1]+a[i][j];//考虑边界
			if(j-1==0)
				f[i][j]=f[i-1][j]+a[i][j];//考虑边界
		}
	}
	cout<<f[n][m];
	return 0;
}

AC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值