captura disponible 999. El coche Golang diaria escanear una pregunta

Disponible retén 999. coche

En un tablero de 8 x 8, hay un coche blanco (torre). También puede ser caja disponible, elefante blanco (obispo) y el peón negro (peón). Se les da el carácter "R", "", 'B' y 'p'. Los caracteres en mayúscula indican blanca, se representan los caracteres en minúsculas negras.

El coche se mueve en la regla de ajedrez: elegir una de las cuatro direcciones básicas (Norte, Este, Oeste y Sur), y luego se mueven en esa dirección hasta que se elija a tope, o llegan al borde del tablero para mover a la misma plaza captura y muerte de los cuadrados de colores opuestos. Además, el coche no puede ser amigable con el otro (blanco) al igual que en la misma caja.

Devuelve el número de la muerte en un coche para ser capaz de captar el movimiento.

Ejemplo 1:

输入: " "" "". "" "" "". "" "". "" "". "[[,,,,,,,], [,,,"." “p”, "", "", "", ""], [ " "". "". " ‘R’,". "". "".", "pag"],[".",".",".",".",".",".",".","."],[".",".",". ",".",".",".",".","."],[".",".",".","pag",".",".",". " ""], [". "". "". "". "". "". "". "". "], [". "" "., ". "". "". "". "". "" "]].
De salida: 3
Explicación:
En la presente realización, el vehículo puede capturar todos murieron.

Ejemplo 2:

输入: " "" "". "" "" "". "" "" ""." [[,,,,,,,], [, ‘P’, ‘p’, “p”, “p”, “p”, "", ""], [ " " ‘p’, ‘p’, ‘B’, ‘p’, ‘p’,".", " "], [". " ‘p’, ‘B’, ‘R’, ‘B’, ‘p’,". "". "], [".", ‘p’, “p ”,‘B’,‘p’,‘p’, "", ""], [". "‘p’,‘p’,‘p’,‘p’,‘p’,". " ""], [". "". "". "". "". "". "". "". "], [". "" "., ,,,,,]] " "" "". "" "" ""."
输出: 0
解释:
象阻止了车捕获任何卒.

Ejemplo 3:

输入: " "" "". "" "" "". "" "". "" "". "[[,,,,,,,], [,,,"." "páginas",".",".",".", ". "], [ ‘p’, ‘p’,". " ‘R’,". " ‘p’, ‘B’,". "], [". "". "". ",".",".",".",".","."],[".",".",".","SI",".",".",". ","."],[".",".",".","pag",".",".",".","."],[".",".", " "". "". "". "". ""."]]
De salida: 3
Explicación: El
coche puede capturar b5 posición, D6 y peón de f5.

consejos:

== board.length Junta [I] .length. 8 ==
bordo [i] [j] puede ser 'R', '', 'B' o 'p'
es sólo la presencia de una placa de [i] en la celosía [j] == 'R'

pensamiento

Estos dos días de un problema un poco de agua al día. Esta pregunta se define sólo un coche, todos pueden utilizar este sencillo escaneo. Si es más de ese coche? Para evitar el doble recuento, empecé a pensar a través de la matriz de firmas, y más tarde con el conjunto sensación mejor, qué te parece?

mi respuesta

Aquí Insertar imagen Descripción

func numRookCaptures(board [][]byte) int {
	for i:=0;i<8;i++{
		for j:=0;j<8;j++{
			if board[i][j]=='R'{
				return capture(board,i,j)
			}
		}
	}
    return 0
}
func capture(board [][]byte,i,j int) int {
	d:=[][]int{{0,1},{0,-1},{1,0},{-1,0}}
	cnt:=0
	for k:=0;k<4;k++{
		x,y:=i,j
		for x+d[k][0]>=0 &&  y+d[k][1] >=0 && x+d[k][0]<8 &&  y+d[k][1] <8 {
			x,y=x+d[k][0] ,  y+d[k][1]
			if board[x][y]=='p'{
				cnt++
				break
			}else if board[x][y]=='B'{
				break
			}
		}
	}
	return cnt
}
Publicado 38 artículos originales · ganado elogios 0 · Vistas 1017

Supongo que te gusta

Origin blog.csdn.net/Cyan1956/article/details/105110929
Recomendado
Clasificación