地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。
来源:互联网 发布:网络基础架构设计方案 编辑:程序博客网 时间:2024/05/22 04:24
本题源自剑指offer
-------------------------------------------------------------------
回溯法
int movingCount(int threshold, int rows, int cols){ bool* visited=new bool[rows*cols]; // memset(visited,0,rows*cols); for(int i=0;i<rows*cols;i++) visited[i]=false; int count=movingCountCore(threshold,rows,cols,0,0,visited); delete[] visited; return count; } bool movingCountCore(int threshold,int rows,int cols,int row,int col,bool* visited){ int count=0; if(check(threshold,rows,cols,row,col,visited)){ visited[row*cols+col]=true; count=1+movingCountCore(threshold,rows,cols,row-1,col,visited)+ movingCountCore(threshold,rows,cols,row,col+1,visited)+ movingCountCore(threshold,rows,cols,row+1,col,visited)+ movingCountCore(threshold,rows,cols,row,col-1,visited); } return count; } bool check(int threshold,int rows,int cols,int row,int col,bool* visited){ if(row>=0 && row<rows && col>=0 && col<cols &&(getDigitSum(row)+getDigitSum(col)) <= threshold && !visited[row*cols+col]) return true; return false; } int getDigitSum(int num){ int sum=0; while(num>0){ sum+=num%10; num=num/10; } return sum; }
阅读全文
0 0
- 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格
- 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。
- 现有一个m * n的网格,从最左上角出发,每次只能向右或者向下移动一格,问有多少种不同的方法可以到达最右下角的格子
- 写一个Cell类,有行和列属性,请实现在格子中的上下左右的移动。
- 给定一个M*N的格子或棋盘,从左下角走到右上角的走法总数(每次只能向右或向上移动一个方格边长的距离)
- 二货小易有一个W*H的网格盒子,网格的行编号为0~H-1,网格的列编号为0~W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。 对于两个格子坐标(x1,y1),(x2,y2)的
- java JXL POI EXCEL 列坐标 和 从0开始的数字下标 的相互转换
- 百度之一个数轴上共有N个点,第一个点的坐标是度度熊现在位置,第N-1个点是度度熊的家。现在他需要依次的从0号坐标走到N-1号坐标。但是除了0号坐标和N-1号坐标,他可以在其余的N-2个坐标中选
- 判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进
- 给定平面上的圆(圆心坐标和半径长度)和一个正方形(四个点的坐标)判断两者是否有交点。
- 移动UIView的坐标
- 一个屏幕坐标和地图坐标转换的js代码
- 已知两点坐标,及在从其中一点开始移动的距离,求移动到的坐标
- java中怎么获取一个窗口移动后的坐标
- 有一个n*m的格子,求起点到终点的最小字典序
- 华为 OJ 坐标的移动
- 从键盘输入行数m,列数n,从堆上动态分配一个m行,n列的int型二维数组,并从键盘
- 同行列对角线的格子
- [LeetCode]21. Merge Two Sorted Lists
- 道路改建
- Java 打包 jar 运行
- Eclipse导入Java项目时“No projects are found to import”错误的处理,
- frameworks/av/media/CedarX-Projects/CedarAndroidLib/LIB_KK44_/Android.mk: No such file or directory
- 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。
- C++基础-this指针/内联函数
- iOS-月日期,本月初始第一天和最后一天,以及比较两个日期的类方法
- 当Listview中的item与其中的Button/CheckBox的点击事件冲突时……
- 机器学习零基础?手把手教你用TensorFlow搭建图像识别系统
- 现代OpenGL+Qt学习笔记之九:smooth和flat着色模式
- JavaScript -- 04 对象,条件判断与循环
- js函数节流(Throttle)
- 例题7-6 带宽(Bandwidth, UVa 140)