로봇의 모션 Java 버전 범위, 특정 컨텐츠는 다음과 같습니다.
지면에는 정사각형의 M 행과 N 열이 있습니다. 로봇은 좌표가 0과 0으로 그리드에서 이동하기 시작하며 한 번에 하나의 그리드를 왼쪽, 오른쪽, 상단 및 하단 방향으로 만 이동할 수 있지만 행 좌표의 숫자 합계 및 열 좌표는 k보다 큰 그리드를 입력 할 수 없습니다. 예를 들어, k가 18 인 경우 로봇은 그리드 (35,37)로 입력 할 수 있습니다. 3+5+3+7 = 18입니다. 그러나 3+5+3+8 = 19. 로봇이 몇 개의 그리드에 도달 할 수 있습니까?
문제 해결 :
1. 첫째, 현재 위치가 입력 조건을 충족하는지 여부를 결정하십시오. 진입 조건이 충족되면 주변, 아래, 왼쪽 및 오른쪽 주위의 네 위치를 계속 판단하십시오 (경계 제외). 만족하지 않으면 현재 위치 선택이 잘못되었음을 의미합니다.
2. 각 시도에서 방문 된 위치를 기록하기 위해 플래그 배열을 선언하십시오.
3. 계속하려는 세 가지 조건이 있습니다. 좌표는 매트릭스에서 합법적이며 좌표는 입력 조건을 충족하며 좌표 위치에 액세스되지 않았습니다.
공개 클래스 솔루션 {public int movingCount (int threshold, int rows, int cols) {if (threshold <0 || 행 <= 0 || cols <= 0) {return 0; } int count = 0; 부울 [] 플래그 = 새로운 부울 [줄*cols]; for (int i = 0; i <rows*cols; i ++) {flag [i] = true; } count = 이동 (임계 값, 0, 0, 행, 콜, 플래그); 반환 수; } public int 이동 (int t, int row, int col, int rows, int cols, boolean [] flag) {int count = 0; if (isalow (t, row, col, rows, cols, flag)) {flag [row*cols+col] = false; count = 1+이동 (t, row-1, col, lows, cols, flag)+이동 (T, Row, Col-1, Rows, Cols, Flag)+이동 (T, Row+1, Col, Rows, Cols, Flag)+이동 (T, Row, Col+1, 행, Cols, 플래그); } 반환 수; } // 좌표 숫자의 합계를 계산하고 임계 값 공개 부울 isalow (int t, int row, int col, int rows, int cols, boolean [] flag) {if (row> rows || row <0 || row || col <0 || row*cols> rows*cols-1) | } int sum = 0; char [] chs = (row+""). tochararray (); char [] chs1 = (col+""). tochararray (); for (char ch : chs) {sum += 문자 .getnumericValue (ch); } for (char ch1 : chs1) {sum += 문자 .getnumericValue (ch1); } return sum <= t; }}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.