首页 > 代码库 > 洛谷——P1101 单词方阵
洛谷——P1101 单词方阵
https://www.luogu.org/problem/show?pid=1101#sub
题目描述
给一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:
7aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
输出样例#1:
*************************************************
没什么好说的~~~洛谷字符串有毒~
1 #include <algorithm> 2 #include <iostream> 3 4 using namespace std; 5 6 int n,mark[119][119]; 7 int fx[8]={0,0,1,1,1,-1,-1,-1}; 8 int fy[8]={1,-1,0,1,-1,0,1,-1}; 9 char yz[7]= {‘y‘,‘i‘,‘z‘,‘h‘,‘o‘,‘n‘,‘g‘},word[119][119];10 11 void print(int x,int y,int drict)12 {13 int cnt=0,xx=x,yy=y;14 for(int i=0;i<7;i++)15 {16 if(word[x][y]==yz[i]) cnt++;17 else break;18 x+=fx[drict];y+=fy[drict];19 }20 if(cnt!=7) return ;21 for(int i=0;i<7;i++)22 {23 mark[xx][yy]=1;24 xx+=fx[drict];yy+=fy[drict];25 }26 }27 28 int main()29 {30 cin>>n;31 for(int i=1;i<=n;i++)32 for(int j=1;j<=n;j++)33 cin>>word[i][j];34 for(int i=1;i<=n;i++)35 for(int j=1;j<=n;j++)36 if(word[i][j]==‘y‘)37 for(int k=0;k<8;k++)38 if(word[i+fx[k]][j+fy[k]]==‘i‘) print(i,j,k);39 for(int i=1;i<=n;i++)40 {41 for(int j=1;j<=n;j++)42 if(mark[i][j]) cout<<word[i][j];43 else cout<<‘*‘;44 cout<<endl;45 }46 return 0;47 }
洛谷——P1101 单词方阵
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。