牛客刷题Java实现---机器人的运动范围
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了牛客刷题Java实现---机器人的运动范围,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2033字,纯文字阅读大概需要3分钟。
内容图文
地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?
class SolutionMethod1{
public int movingCount(int threshold,int rows,int cols){//threshold 约束值,rows 方格行数,cols 方格列数,
boolean[] visted = new boolean[rows*cols];
for(int i = 0; i < visted.length; i++)
visted[i] = false;
int count = movingCountCore(threshold,rows,cols,0,0,visted);
return count; //最多可走的方格数
}
public int movingCountCore(int threshold,int rows,int cols,int row,int col,boolean[] visted){
//threshold 约束值 ;rows 方格行数;cols 方格列数;row 当前处理的行号;col 当前处理的列号;visted 访问标记数组
int count = 0;
if(check(threshold,rows,cols,row,col,visted)){
visted[row*cols + col] = true;
count = 1 + movingCountCore(threshold,rows,cols,row - 1,col,visted) +
movingCountCore(threshold,rows,cols,row,col - 1,visted) +
movingCountCore(threshold,rows,cols,row + 1,col,visted) +
movingCountCore(threshold,rows,cols,row,col + 1,visted);
}
return count; //最多可走的方格数
}
boolean check(int threshold,int rows,int cols,int row,int col,boolean[] visted){
if(row >= 0 && row < rows && col >= 0 && col < cols
&& (getDigitSum(row) + getDigitSum(col) <= threshold)
&& !visted[row* cols + col])
return true;
return false;
}
public int getDigitSum(int number){ //number 数字
int sum = 0;
while(number > 0){
sum += number%10;
number /= 10;
}
return sum; //数字的位数之和
}
}
public class Solution {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入限制条件k:");
int k = scanner.nextInt();
System.out.println("请输入方格的行数m:");
int m = scanner.nextInt();
System.out.println("请输入方格的列数n:");
int n = scanner.nextInt();
SolutionMethod1 solution1 = new SolutionMethod1();
scanner.close();
System.out.println("矩阵能到达的方格数是:");
System.out.println(solution1.movingCount(k, m, n));
}
}
内容总结
以上是互联网集市为您收集整理的牛客刷题Java实现---机器人的运动范围全部内容,希望文章能够帮你解决牛客刷题Java实现---机器人的运动范围所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。