题目描述
给一nXn的字母方阵,内可能蕴含多个“yizhong”单词。单词在方阵中是沿着同一方向连续摆放的。摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间[color=red]可以[/color]交叉,因此有可能共用字母。输出时,将不是单词的字母用“*”代替,以突出显示单词。例如:
输入:
8 输出:
qyizhong *yizhong
gydthkjy gy******
nwidghji n*i*****
orbzsfgz o**z****
hhgrhwth h***h***
zzzzzozo z****o**
iwdfrgng i*****n*
yyyygggg y******g
输入输出格式
输入格式:
第一行输入一个数n。(7<=n<=100)。
第二行开始输入nXn的字母矩阵。
输出格式:
突出显示单词的nXn矩阵。
输入输出样例
输入样例#1:
7
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
输出样例#1:
*******
*******
*******
*******
*******
*******
给一nXn的字母方阵,内可能蕴含多个“yizhong”单词。单词在方阵中是沿着同一方向连续摆放的。摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间[color=red]可以[/color]交叉,因此有可能共用字母。输出时,将不是单词的字母用“*”代替,以突出显示单词。例如:
输入:
8 输出:
qyizhong *yizhong
gydthkjy gy******
nwidghji n*i*****
orbzsfgz o**z****
hhgrhwth h***h***
zzzzzozo z****o**
iwdfrgng i*****n*
yyyygggg y******g
输入输出格式
输入格式:
第一行输入一个数n。(7<=n<=100)。
第二行开始输入nXn的字母矩阵。
输出格式:
突出显示单词的nXn矩阵。
输入输出样例
输入样例#1:
7
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
输出样例#1:
*******
*******
*******
*******
*******
*******
*******
#include<stdio.h>
int n,p,q;
int flag;
int book[105][105];
char arr[7] = {'y','i','z','h','o','n','g'};
char arra[105][105];
int x[8] = {-1,-1,-1,0,0,1,1,1};
int y[8] = {-1,0,1,-1,1,-1,0,1};
void dfs(int deep,int tends){
if(deep >= 6){
flag = 1;
return ;
}
if(p+x[tends]*(deep+1)>=0&&p+x[tends]*(deep+1)<n&&q+y[tends]*(deep+1)>=0&&q+y[tends]*(deep+1)<n
&& arra[p+x[tends]*(deep+1)][q+y[tends]*(deep+1)] == arr[deep+1]){
if(book[p+x[tends]*(deep+1)][q+y[tends]*(deep+1)] == 1){
dfs(deep+1,tends);
}else{
book[p+x[tends]*(deep+1)][q+y[tends]*(deep+1)] = 1;
dfs(deep+1,tends);
if(flag == 0){
book[p+x[tends]*(deep+1)][q+y[tends]*(deep+1)] = 0;
}
}
}
}
int main(){
scanf("%d",&n);
for(int i = 0;i < n;i ++){
scanf("%s",arra[i]);
}
for(int i = 0;i < n;i ++){
for(int j = 0;j < n;j ++){
if(arra[i][j] == 'y'){
p = i;
q = j;
for(int k = 0;k < 8;k ++){
flag = 0;
dfs(0,k);
if(flag){
book[p][q] = 1;
}
}
}
}
}
for(int i = 0;i < n;i ++){
for(int j = 0;j < n;j ++){
if(book[i][j]){
printf("%c",arra[i][j]);
}else{
printf("*");
}
}
printf("\n");
}
return 0;
}