javaはロボットの運動範囲を計算します。
ロボットの動き範囲java版の具体的な内容は以下の通りです。
地上にはm行とn列の四角形があります。ロボットは座標0,0の格子から移動します。毎回左、右、上、下の4つの方向に1マスだけ移動できますが、行座標と列座標の数桁とkより大きい格子には入れません。例えば、kが18の場合、ロボットは方眼(35,37)に入ることができます。3+5+3+7=18です。しかし、方眼に入ることができません。3+5+3+8=19です。このロボットはいくつの格子に達することができますか?
問題解決の考え方:
1.現在位置が入場条件を満たしているかどうかを判断し、入場可能条件を満たしているなら、引き続きその周囲の上下左右の4つの位置を判断する(境界以外)。満足していない場合は、現在位置の選択エラーを説明します。
2.各試行において、訪問した位置を記録するためのフラグ配列を宣言します。
3.現在続けてみようとしている条件は3つあります。座標はマトリクス内の位置が合法的で、座標は入力可能条件を満たしています。座標位置はアクセスされていません。
地上にはm行とn列の四角形があります。ロボットは座標0,0の格子から移動します。毎回左、右、上、下の4つの方向に1マスだけ移動できますが、行座標と列座標の数桁とkより大きい格子には入れません。例えば、kが18の場合、ロボットは方眼(35,37)に入ることができます。3+5+3+7=18です。しかし、方眼に入ることができません。3+5+3+8=19です。このロボットはいくつの格子に達することができますか?
問題解決の考え方:
1.現在位置が入場条件を満たしているかどうかを判断し、入場可能条件を満たしているなら、引き続きその周囲の上下左右の4つの位置を判断する(境界以外)。満足していない場合は、現在位置の選択エラーを説明します。
2.各試行において、訪問した位置を記録するためのフラグ配列を宣言します。
3.現在続けてみようとしている条件は3つあります。座標はマトリクス内の位置が合法的で、座標は入力可能条件を満たしています。座標位置はアクセスされていません。
public class Solution {
public int movingCount(int threshold, int rows, int cols)
{
if(threshold<0 || rows<=0 || cols<=0){
return 0;
}
int count = 0;
boolean[] flag = new boolean[rows*cols];
for(int i=0; i<rows*cols; i++){
flag[i] = true;
}
count = Moving(threshold, 0, 0, rows, cols, flag);
return count;
}
public int Moving(int t, int row, int col, int rows, int cols, boolean[] flag){
int count = 0;
if(isAllow(t, row, col, rows, cols, flag)){
flag[row*cols+col] = false;
count = 1+Moving(t, row-1, col, rows, cols, flag)+Moving(t, row, col-1, rows, cols, flag)+Moving(t, row+1, col, rows, cols, flag)+Moving(t, row, col+1, rows, cols, flag);
}
return count;
}
// , threshold
public boolean isAllow(int t, int row, int col, int rows, int cols, boolean[] flag){
if(row>rows ||row<0 || col>cols || col<0 || row*cols+col>rows*cols-1|| flag[row*cols+col]==false){
return false;
}
int sum = 0;
char[] chs = (row+"").toCharArray();
char[] chs1= (col+"").toCharArray();
for(char ch: chs){
sum += Character.getNumericValue(ch);
}
for(char ch1: chs1){
sum += Character.getNumericValue(ch1);
}
return sum<=t;
}
}
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。