【面试题13. 机器人的运动范围】(回溯)

news/2024/7/20 22:16:43 标签: 算法, 深度优先

【解题思路】 

       这道题说的不清楚,其实包含一个隐含条件:不可达的方格相当于障碍物,不能通过不可达的方格到达别的符合条件的方格。

如这个图中,上面那块符合条件的方格是可达的,但是无法到达下面符合条件的区域。

class Solution {
    int num = 0;
    int M, N, cnt, K;
    int[][] dire = {{-1,0}, {0,1}, {1,0}, {0,-1}};
    public int movingCount(int m, int n, int k) {
        boolean[][] flag = new boolean[m][n];
        M = m; N = n; cnt = m*n; K = k;
        num = 0;
        DFS(0, 0, 0, flag);
        return num;
    }

    public void DFS(int n, int row, int col, boolean[][] flag)
    {
        if(n == cnt) return;
        int tmp = 0, r = row, c = col;
        while(r > 0)
        {
            tmp += r%10;
            r = r/10;
        }
        while(c > 0)
        {
            tmp += c%10;
            c = c/10;
        }
        if(tmp <= K) num++;
        flag[row][col] = true;
        for(int i = 0; i < 4; i++)
        {
            int newRow = row + dire[i][0];
            int newCol = col + dire[i][1];
            if(newRow < M && newRow >= 0 && newCol < N && newCol >= 0 && !flag[newRow][newCol])
            {
                DFS(n+1, newRow, newCol, flag);
            }
        }
    }
}

 


http://www.niftyadmin.cn/n/708855.html

相关文章

[javaEE] 三层架构案例-用户模块(一)

用户注册登录注销 ServletJSPjavaBeandom4j 分层结构&#xff1a; com.tsh.web com.tsh.service com.tsh.dao com.tsh.domain com.tsh.util com.tsh.test com.tsh.exception com.tsh.factory 使用的包&#xff1a; dom4j jstl beanutils junit users.xml-----------模拟数据库 …

java 单例 同步_〖JAVA经验〗JAVA技巧:加同步锁的单例模式代码

/* *单例模式 *单例模式&#xff0c;保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。 *加同步锁的单例模式&#xff0c;适合在多线程中使用。 */ class Singleton{ private static Singleton instance; private Singleton(){}//构造函数为private&#xff0…

【面试题59 - II. 队列的最大值】(普通队列)

【解题思路】 刚开始用了优先队列PriorityQueue&#xff0c;在一组测试样例中过不了&#xff0c;输出总是[], [], [], [], [], [], [], 16, [], 22&#xff0c;正确答案应该是[], [], [], [], [], [], [], 96, [], 16。经过调试&#xff0c;终于想起了&#xff0c;这是优先队列…

轻松搭建svn版本管理工具+svnmanager管理客户端

2019独角兽企业重金招聘Python工程师标准>>> 前面的文章有写过svn版本管理工具的安装是基于svn的安装包进行安装&#xff0c;对于svn与apache的结合还得下svn和apache的模块进行结合过程比较繁琐&#xff0c;今天来介绍下通过centos的yum来安装svn能够快速安装svn&a…

Android保持屏幕常亮唤醒状态

2019独角兽企业重金招聘Python工程师标准>>> 方法1 第一步&#xff1a; 首先添加权限&#xff1a; <uses-permission android:name"android.permission.WAKE_LOCK"></uses-permission> 第二步&#xff1a;代码实现如下&#xff1a; public c…

Cache封装类

代码&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; using System.Collections; using System.Web.Caching; using System.Web.Hosting;namespace CompanyName.Depart…

java 反射获取class代码_看懂Java的Class与反射机制原理,让你写出更灵活的代码...

前言最近一些朋友怎么是说自己的代码太复杂、太臃肿、灵活性太差&#xff0c;也不知道问题出在哪里。首先表扬一下你的精神&#xff0c;可以时刻关注着自己代码的问题。作为一个优秀的码农&#xff0c;总是希望用最少的代码来实现某一项功能&#xff0c;我也会经常翻看自己写的…

LinkedIn开源Photon机器学习:支持Spark

机器学习是LinkedIn公司关联营销的关键组成部分。他们使用机器学习为feed、广告、推荐系统&#xff08;比如People You May Know&#xff09;、邮件优化、搜索引擎等训练排序算法。更深一点的例子可以看LinkedIn的feed流实现&#xff3b;部分一&#xff0c;部分二&#xff3d;&…