博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指Offer——机器人的运动范围
阅读量:5248 次
发布时间:2019-06-14

本文共 1258 字,大约阅读时间需要 4 分钟。

题目描述:

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

分析:

 图的遍历。

代码:

1 class Solution { 2 public: 3     int cnt; 4     int movingCount(int threshold, int rows, int cols) { 5         bool *flag = new bool[rows * cols]; 6         memset(flag, 0, sizeof(bool)*rows * cols); 7         cnt = 0; 8         moving(threshold, rows, cols, 0, 0, flag); 9         return cnt;10     }11     void moving(int threshold, int rows, int cols, int i, int j, bool* flag) {12         if(i >= 0 && i < rows && j >= 0 && j < cols && getsum(i) + getsum(j) <= threshold && flag[i * cols + j] == false) {13             flag[i * cols + j] = true;14             cnt++;15             moving(threshold, rows, cols, i + 1, j, flag);16             moving(threshold, rows, cols, i - 1, j, flag);17             moving(threshold, rows, cols, i, j - 1, flag);18             moving(threshold, rows, cols, i, j + 1, flag);19         }20     }21     int getsum(int num) {22         int sum = 0;23         while(num) {24             sum += num % 10;25             num /= 10;26         }27         return sum;28     }29 };

 

转载于:https://www.cnblogs.com/jacen789/p/7747815.html

你可能感兴趣的文章
ASP.NET WebApi 基于OAuth2.0实现Token签名认证
查看>>
283. Move Zeroes把零放在最后面
查看>>
Visual Studio Code 打开.py代码报Linter pylint is not installed解决办法
查看>>
Python 数据类型
查看>>
S5PV210根文件系统的制作(一)
查看>>
51NOD 1244 莫比乌斯函数之和
查看>>
centos下同时启动多个tomcat
查看>>
slab分配器
查看>>
数据清洗
查看>>
【读书笔记】C#高级编程 第三章 对象和类型
查看>>
Struts2工作原理
查看>>
针对sl的ICSharpCode.SharpZipLib,只保留zip,gzip的流压缩、解压缩功能
查看>>
【转】代码中特殊的注释技术——TODO、FIXME和XXX的用处
查看>>
【SVM】libsvm-python
查看>>
C++循环单链表删除连续相邻重复值
查看>>
渣渣小本求职复习之路每天一博客系列——Java基础(3)
查看>>
Jmeter接口压力测试,Java.net.BindException: Address already in use: connect
查看>>
ASP.NET使网页弹出窗口不再困难
查看>>
Leetcode Balanced Binary Tree
查看>>
Leetcode 92. Reverse Linked List II
查看>>