ロボットの動きのJavaバージョンの範囲、特定のコンテンツは次のとおりです
地面にはm行とn列の正方形があります。ロボットは、座標0と0のグリッドから移動し始め、一度に1つのグリッドを左、右、下の方向にのみ移動できますが、行座標の桁と列座標の合計でグリッドに入ることはできません。たとえば、kが18である場合、ロボットは3+5+3+7 = 18のためにグリッド(35,37)に入ることができます。ただし、3+5+3+8 =19。ロボットに到達できますか?
問題解決策:
1.最初に、現在の位置がエントリ条件を満たしているかどうかを判断します。エントリ条件が満たされている場合は、その周りの4つの位置を、下、左、右に判断し続けます(境界を除く)。満足していない場合、現在の位置選択が正しくないことを意味します。
2。各試みで、訪問された場所を記録するために一連のフラグを宣言します。
3.続行しようとする条件は3つあります。座標はマトリックスで合法であり、座標は入力条件を満たし、座標位置にアクセスしていません。
public class solution {public int moviveCount(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(しきい値、0、0、行、col、フラグ);返品数; } 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、列、Cols、Flag)+Moving(T、Row、Col-1、Cols、Flag)+Moving(T、Row+1、Col、Rows、Cols、Flag)+Moving(T、Row、Col+1、Rows、Cols、Flag); } return count; } //座標の数字の合計を計算し、比較結果をしきい値とともに返します} 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; }}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。