东华OJ练习——83 不同路径 II

这篇博客讨论了如何在含有障碍物的m x n网格中,从左上角到达右下角的不同路径数量。机器人只能向下或向右移动。文章提供了一个示例,其中3x3网格中间有一个障碍物,存在2条不同路径。输入包括网格的行数和列数,以及0(空位)和1(障碍物)的二维矩阵。解决方案需处理0和1之间无空格的情况,并特别注意边界条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

83 不同路径 II

1.问题描述
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。

现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?

网格中的障碍物和空位置分别用 1 和 0 来表示。

说明:m 和 n 的值均不超过 100。

示例 1:

输入:

[

[0,0,0],

[0,1,0],

[0,0,0]

]

输出: 2

解释:

3x3 网格的正中间有一个障碍物。

从左上角到右下角一共有 2 条不同的路径:

  1. 向右 -> 向右 -> 向下 -> 向下

  2. 向下 -> 向下 -> 向右 -> 向右

2.输入说明
首先输入矩阵的行数m和列数n

然后输入m行,每行n个字符0或1。中间无空格分隔。

说明:m 和 n 的值均不超过 100。
3.输出说明
输出一个整数
4.范例
输入
3 3
000
010
000
输出
2
5.代码

#include<iostream>
#include<vector>
#include<unordered_map>
#include<string>
#include<set>
#include<queue>
#include<stack>
#include <algorithm>
#include<unordered_set>
#include<string.h>
using namespace std;

int Nums_search(vector<vector<int> >&nums)
{
	

	int m = nums.size();//行数
	int n = nums[0].size();//列数


	vector<vector<int> >dp(m, vector<int>(n, 0));//重点,刚开始均初始化为0

	for (int i = 0; i < m && nums[i][0] == 0; i++)
	{
		dp[i][0] = 1;
	}

	for (int j = 0; j < n && nums[0][j] == 0; j++)
	{
		dp[0][j] = 1;
	}

	for (int i = 1; i < m; i++)
	{
		for (int j = 1; j < n; j++)
		{
			if (nums[i][j] == 1)
				continue;//跳过本次循环 
			dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
		}
	}
	return dp[m - 1][n - 1];


}



int main()

{

	int m, n,t;
	cin >> m;//行数
	cin >> n;//列数


	vector<vector<int>>nums;

	for (int i = 0; i < m; i++)
	{
		string  tmp ="";//这道题目的输入有坑,必须要以字符串形式一行行读入,然后一个个字符转化为数字
		cin >> tmp;
		vector<int>h;
		for (int j = 0; j < tmp.size(); j++)
		{
			int s = tmp[j]-'0';
			h.push_back(s);
		}
		nums.push_back(h);
	}
	int res = Nums_search(nums);

	cout << res << endl;
	return 0;

}







总结!!
1.题目一直AC不了,一看是输入的0和1之间没有空格,因此读取时只能一行行以字符串形式读入,再转化为数字
2.注意单行单列的判断

### 关于面包板电源模块 MB102 的 USB 供电规格及兼容性 #### 1. **MB102 基本功能** 面包板电源模块 MB102 是一种常见的实验工具,主要用于为基于面包板的小型电子项目提供稳定的电压输出。它通常具有两路独立的稳压输出:一路为 5V 和另一路可调电压(一般范围为 3V 至 12V)。这种设计使得它可以满足多种芯片和传感器的不同工作电压需求。 #### 2. **USB 供电方式** MB102 支持通过 USB 接口供电,输入电压通常是标准的 5V DC[^1]。由于其内部集成了 LM7805 稳压器以及可调节电位器控制的直流-直流变换电路,因此即使输入来自电脑或其他低功率 USB 设备,也能稳定地向负载供应电力。不过需要注意的是,如果项目的功耗较高,则可能超出某些 USB 端口的最大电流能力(一般是 500mA),从而引起不稳定现象或者保护机制启动断开连接的情况发生。 #### 3. **兼容性分析** 该型号广泛适用于各种微控制器单元 (MCU),特别是那些像 Wemos D1 R32 这样可以通过杜邦线轻松接入并共享相同逻辑级别的系统[^2]。另外,在提到 Arduino Uno 板时也表明了良好的互操作性,因为两者均采用相似的标准接口定义与电气特性参数设置[^4]: - 对于需要 3.3V 工作环境下的组件来说,只需调整好对应跳线帽位置即可实现精准匹配; - 当涉及到更多外围扩展应用场合下,例如带有多重模拟信号采集任务的情形里,利用 MB102 提供干净无干扰的基础能源供给就显得尤为重要了[^3]。 综上所述,对于打算构建以单片机为核心的原型验证平台而言,选用具备良好声誉记录且易于获取配件支持服务链路上下游资源丰富的品牌产品——如这里讨论过的这款特定类型的配电装置不失为明智之举之一。 ```python # 示例 Python 代码展示如何检测硬件状态 import machine pin = machine.Pin(2, machine.Pin.IN) if pin.value() == 1: print("Power supply is stable.") else: print("Check your connections and power source.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值