leetcode刷题记录19(2023-08-30)【机器人的运动范围(bfs) | 剪绳子I(dp、数学) | 剪绳子II(乘法结果取余) | 二进制中1的个数(位运算、获取最右边的1)】

剑指 Offer 13. 机器人的运动范围

地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?

示例 1:

输入:m = 2, n = 3, k = 1
输出:3

示例 2:

输入:m = 3, n = 1, k = 0
输出:1

提示:

1 <= n,m <= 100
0 <= k <= 20

从 (0, 0) 出发,每次向右和向下,注意,不需要向上和向左,因为只需要向右和向下就可以把整片地图遍历完成了。

#include<iostream>
#include<vector>
#include<queue>

using namespace std;

struct Postion {
   
   
    int x;
    int y;
};

class Solution {
   
   
public:
    int movingCount(int m, int n, int k) {
   
   
        vector<int> xDirection = {
   
    0,1 };
        vector<int> yDirection = {
   
    1,0 };
        vector<vector<bool>> vec(m, vector<bool>(n));
        queue<Postion> que;
        que.push({
   
    0,0 });
        vec[0][0] = true;
        int res = 0;
        while (!que.empty()) {
   
   
            Postion curPos = que.front();
            que.pop();
            int xPos = curPos.x;
            int yPos = curPos.y;
            int sum = 0;
            while (xPos != 0) {
   
   
                sum 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cherries Man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值