题目描述
给一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:
******* ******* ******* ******* ******* ******* *******
——————————————————————————————————————————————————————————
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<algorithm> 6 #include<queue> 7 #include<cstdlib> 8 using namespace std; 9 char a[100][100],b[100][100]={0};//a用来输入,b 是用来判断的。 10 int fx[8]={-1,-1,0,1,1,1,0,-1};//x方向数组。 11 int fy[8]={0,1,1,1,0,-1,-1,-1};//y方向数组。 12 char z[7]={‘y‘,‘i‘,‘z‘,‘h‘,‘o‘,‘n‘,‘g‘};//还是用于判断。 13 int read(){ 14 int x=0,f=1;char ch=getchar(); 15 while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();} 16 while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();} 17 return x*f; 18 } 19 void p(int x1,int y1,int f) 20 { 21 int x=x1,y=y1;//备份。 22 int s=0; 23 for(int i=0;i<7;i++)//从当前坐标开始望 f 方向寻找"yizhong"。 24 { 25 if(a[x][y]==z[i])s++;//这里就用到了 z ,判断是否有要找的字,有则 s++。 26 else break;//如果发现 没有,直接退出。 27 x+=fx[f],y+=fy[f];//改变坐标到下一个点。 28 } 29 if(s==7)//如果s=7,说明找到了。 30 { 31 for(int i=0;i<7;i++) 32 { 33 b[x1][y1]=1;//这里用到了 b 。将有“yizhong”的坐标标记为1。 34 x1+=fx[f],y1+=fy[f];//依旧移动到下一个点。 35 } 36 } 37 } 38 int main() 39 { 40 int n,f=0; 41 cin>>n;for(int i=0;i<n;i++){for(int j=0;j<n;j++)cin>>a[i][j];}//输入方阵,用二维数组 a 存储。 42 for(int i=0;i<n;i++)//开始寻找“yizhong”。 43 { 44 for(int j=0;j<n;j++) 45 { 46 if(a[i][j]==‘y‘)//判断是否有“y”。 47 { 48 for(int o=0;o<8;o++)//如果有,在周围找看看是否有“i” 。 49 if(a[i+fx[o]][j+fy[o]]==‘i‘) 50 { 51 f=o;p(i,j,f);//如果有,调用函数,f 是方向。 52 } 53 } 54 } 55 } 56 for(int i=0;i<n;i++) 57 { 58 for(int j=0;j<n;j++)if(b[i][j]==1)cout<<a[i][j];else cout<<"*";//判断如果坐标标记为 1,则输出该坐标上的字。否则输出"*"。 59 cout<<endl;//换行。 60 } 61 }
时间: 2024-10-18 22:48:33