弱小和无知不是生存的障碍,傲慢才是。------《三体》
import java.util.Scanner;
public class P1101 {
// 要点:
// 1.8个方向是米字
static int N;
static char arr[][];
static char copy[]="yizhong".toCharArray();
static int x[]={1,0,1,-1,0,-1,1,-1};//八个方位
static int y[]={0,1,1,0,-1,-1,-1,1};//方便比对
static int book[][]=new int [100][100];//用于判断是否能输出'*'==0;
public static Boolean dfs(int x,int y,int n,int m,int next) {
if(next>=7) {//表示前面七个度匹配上了
return true;
}
if(x<N&&x>=0&&y<N&&y>=0&&arr[x][y]==copy[next]) {
//在当前可以的情况下,再判断是否能成对匹配
if(dfs(x+n, y+m, n, m, next+1)) {
book[x][y]=1;
return true;
}
}
return false;
}
public static void main(String[] args) {
Scanner cinScanner= new Scanner(System.in);
N=cinScanner.nextInt();
arr=new char[N][N];
String iString;
//输入
for(int i=0;i<N;i++) {
iString=cinScanner.next();
arr[i]=iString.toCharArray();
}
//dfs
for(int i=0;i<N;i++)
for(int u=0;u<N;u++) {
if(arr[i][u]=='y') {//查找"yizhong"的y,从y开始找
{
for(int r=0;r<8;r++)//8个方向
{
dfs(i, u, x[r], y[r], 0);
}
}
}
}
//输出
for(int i=0;i<N;i++) {
for(int u=0;u<N;u++) {
if(book[i][u]==1)
System.out.print(arr[i][u]);
else
System.out.print("*");
}
System.out.println();
}
}
}