P1101 单词方阵
来源:互联网 发布:百雀羚vs欧莱雅 知乎 编辑:程序博客网 时间:2024/05/16 00:55
https://www.luogu.org/problem/show?pid=1101
题目描述
给一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<bits/stdc++.h>using namespace std;int cx[8]={0,0,-1,1,1,1,-1,-1},cy[8]={1,-1,0,0,1,-1,1,-1},v[101][101],n,i;char a[101][101],s[]="yizhong";void dfs(int x,int y,int d,int t){ if(d==-1) { for(int j=0;j<8;j++) { int xx=x+cx[j],yy=y+cy[j]; if(a[xx][yy]==s[t]) dfs(xx,yy,j,t+1); } return; } if(t==7) { int xx=x,yy=y; for(int j=1;j<=7;j++) { v[xx][yy]=1; xx=xx-cx[d];yy=yy-cy[d]; } return; } int xx=x+cx[d],yy=y+cy[d]; if(a[xx][yy]==s[t]) dfs(xx,yy,d,t+1);}int main(){ cin>>n; for(i=1;i<=n;i++) scanf("%s",a[i]+1); for(i=1;i<=n;i++) for(int j=1;j<=n;j++) if(a[i][j]=='y') dfs(i,j,-1,1); for(i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(v[i][j]==1) cout<<a[i][j]; else cout<<"*"; } cout<<endl; } return 0;}
- 洛谷P1101 单词方阵
- P1101 单词方阵
- C++ P1101 单词方阵
- #洛谷 P1101单词方阵
- P1101 单词方阵
- 洛谷P1101 单词方阵
- 洛谷 P1101 单词方阵
- 洛谷 P1101 单词方阵
- P1101 单词方阵
- P1101 单词方阵
- 洛谷 P1101 单词方阵
- P1101 单词方阵
- P1101 单词方阵
- |洛谷|DFS|P1101 单词方阵
- 【p1101-单词方阵】解题记录
- 【搜索】洛谷 P1101 单词方阵
- luogu P1101 单词方阵【dfs】
- 洛谷——P1101 单词方阵
- 关于转移博客的通知
- Blender脚本编程
- Codeforces 794 F Leha and security system(线段树+构造)
- 算法提高 ADV-18 实数相加
- JAVA新手上路之遇见线程
- P1101 单词方阵
- java中重载和重写的区别
- CSS基础知识
- Cmake编译安装MySQL&多配置文件部署MySQL多实例方案
- java中接口和抽象类的区别
- ccf认证节日
- linux安装dubbo-admin-2.5.3.war管控台
- FZU2256迷宫
- 四线程读写_牛客网