Enlace del título: P1101
esta pregunta (⊙o⊙) ..., Konjac dijo que no se escribirá por búsqueda, no se escribe, por lo que la violencia directa
se conoce a partir de la pregunta, tenemos 8 direcciones, y todas las 8 direcciones que cumplen con las condiciones deben ser emitidas. Solo porque puede usar la posición repetida, si usa la búsqueda, tiene que encontrar una manera de resolver este problema, no voy a utilizar el
método:
solo necesitamos encontrar el primer carácter, es decir, y después de encontrarlo, atravesamos su 8 visto en la dirección el personaje no se satisface secuencia Yizhong, encontrado, después se graban en
el código
import java.util.*;
public class Main {
static int n;
static char a[][];
static boolean b[][];
static char key[] = new String("yizhong").toCharArray();
static int xx[] = new int[]{-1,-1,-1,0,0,1,1,1};
static int yy[] = new int[]{-1,0,1,-1,1,-1,0,1};
static void check(int x,int y){
for(int i = 0;i < 8;i++){
int j = 0;
int p = x;
int q = y;
for(j = 1;j < 7;j++){
if(p+xx[i]>=0 && p+xx[i]<n && q+yy[i]>=0 && q+yy[i]<n && (a[p+xx[i]][q+yy[i]] == key[j])){
p = p+xx[i];
q = q+yy[i];
}
else
break;
}
if(j == 7){
for(int k = 0;k < 7;k++){
b[p][q] = true;
p = p-xx[i];
q = q-yy[i];
}
}
}
}
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
a = new char[n][n];
b = new boolean[n][n];
for(int i = 0;i < n;i++)
for(int j = 0;j < n;j++)
b[i][j] = false;
for(int i = 0;i < n;i++)
a[i] = sc.next().toCharArray();
for(int i = 0;i < n;i++)
for(int j = 0;j < n;j++)
if(a[i][j] == 'y')
check(i,j);
for(int i = 0;i < n;i++){
for(int j = 0;j < n;j++){
if(b[i][j])
System.out.print(a[i][j]);
else
System.out.print("*");
}
System.out.println();
}
}
}