题目描述

给一n×nn \times nn×n的字母方阵,内可能蕴含多个“yizhong”单词。单词在方阵中是沿着同一方向连续摆放的。摆放可沿着 888 个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间可以交叉,因此有可能共用字母。输出时,将不是单词的字母用*代替,以突出显示单词。例如:

输入:
8 输出:
qyizhong *yizhong
gydthkjy gy******
nwidghji n*i*****
orbzsfgz o**z****
hhgrhwth h***h***
zzzzzozo z****o**
iwdfrgng i*****n*
yyyygggg y******g

输入输出格式

输入格式:

第一行输入一个数nnn。(7≤n≤1007 \le n \le 1007≤n≤100)。

第二行开始输入n×nn \times nn×n的字母矩阵。

输出格式:

突出显示单词的n×nn \times nn×n矩阵。

输入输出样例

输入样例#1: 复制

7
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
输出样例#1: 复制

*******
*******
*******
*******
*******
*******
*******
输入样例#2: 复制

8
qyizhong
gydthkjy
nwidghji
orbzsfgz
hhgrhwth
zzzzzozo
iwdfrgng
yyyygggg
输出样例#2: 复制

*yizhong
gy******
n*i*****
o**z****
h***h***
z****o**
i*****n*
y******g

题意:

给定一个n*n的字符矩阵,问能不能在行、列、对角线一共八个方向中找到字符串"yizhong"

把所有除"yizhong"之外的字符变成‘*’

思路:

数据量只有100,所以随便怎么暴力都行

 //#include<bits/stdc++>
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<stdlib.h>
#include<queue>
#include<map>
#include<stack>
#include<set> #define LL long long
#define ull unsigned long long
#define inf 0x3f3f3f3f using namespace std;
int n;
const int maxn = ;
string ch[maxn];
bool yes[maxn][maxn]; int main()
{
scanf("%d", &n);
for(int i = ; i < n; i++){
cin>>ch[i];
} for(int i = ; i < n; i++){
for(int j = ; j <= n - ; j++){
string tmp = "";
for(int k = ; k < ; k++){
tmp += ch[i][j + k];
}
if(tmp == "yizhong"){
for(int k = ; k < ; k++){
yes[i][j + k] = true;
}
}
}
for(int j = n - ; j >= ; j--){
string tmp = "";
for(int k = ; k < ; k++){
tmp += ch[i][j - k];
}
if(tmp == "yizhong"){
for(int k = ; k < ; k++){
yes[i][j - k] = true;
}
}
}
} for(int i = ; i < n; i++){
for(int j = ; j <= n - ; j++){
string tmp = "";
for(int k = ; k < ; k++){
tmp += ch[j + k][i];
}
if(tmp == "yizhong"){
for(int k = ; k < ; k++){
yes[j + k][i] = true;
}
}
}
for(int j = n - ; j >= ; j--){
string tmp = "";
for(int k = ; k < ; k++){
tmp += ch[j - k][i];
}
if(tmp == "yizhong"){
for(int k = ; k < ; k++){
yes[j - k][i] = true;
} }
}
} for(int i = ; i <= n - ; i++){
for(int j = -n + + i; j <= i; j++){
string tmp = "";
for(int k = ; k < ; k++){
tmp += ch[i + k][i + k - j];
}
if(tmp == "yizhong"){
for(int k = ; k < ; k++){
yes[i + k][i + k - j] = true;
}
}
}
}
for(int i = n - ; i >= ; i--){
for(int j = -n + + i; j <= i; j++){
string tmp = "";
for(int k = ; k < ; k++){
tmp += ch[i - k][i - k - j];
}
if(tmp == "yizhong"){
for(int k = ; k < ; k++){
yes[i - k][i - k - j] = true;
}
}
}
} for(int i = ; i <= n - ; i++){
for(int j = n - ; j >= ; j--){
string tmp = "";
for(int k = ; k < ; k++){
tmp += ch[i + k][n - - i - k];
}
if(tmp == "yizhong"){
for(int k = ; k < ; k++){
yes[i + k][n - - i - k] = true;
}
}
}
}
for(int i = n - ; i >= ; i--){
for(int j = ; j <= n - ; j++){
string tmp = "";
for(int k = ; k < ; k++){
tmp += ch[i - k][n - - i + k];
}
if(tmp == "yizhong"){
for(int k = ; k < ; k++){
yes[i - k][n - - i - k] = true;
} }
}
} for(int i = ; i < n; i++){
for(int j = ; j < n; j++){
if(yes[i][j]){
printf("%c", ch[i][j]);
}
else{
printf("*");
}
}
printf("\n");
}
return ;
}

洛谷P1101 单词方阵【暴力】【字符串】的更多相关文章

  1. 洛谷 P1101 单词方阵

    题目链接 https://www.luogu.org/problemnew/show/P1101 题目描述 给一n×n的字母方阵,内可能蕴含多个"yizhong"单词.单词在方阵中 ...

  2. 洛谷——P1101 单词方阵

    https://www.luogu.org/problem/show?pid=1101#sub 题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放 ...

  3. 洛谷P1101单词方阵

    题目描述 给一n×n的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的. 摆放可沿着 8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间可以交叉,因此有 ...

  4. 洛谷P1101 单词方阵【DFS】

    给一n \times nn×n的字母方阵,内可能蕴含多个"yizhong"单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着 88 个方向的任一方向,同一单词摆放时不再改变方向 ...

  5. 洛谷P1101 单词方阵——S.B.S.

    题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间[color=red ...

  6. 洛谷P1101 单词方阵

    题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间[color=red ...

  7. 洛谷 P1101单词方阵

    我已经,是这个世界上,最幸福的女孩了                                                                         ——<末日时 ...

  8. 集训作业 洛谷P1101 单词方阵

    这个题的长度真的有点长,我直接放图片吧 这个题又是一个和谐的搜索,找到yizhong的y就开始8面搜索,遇见正确的字母就继续搜索,不正确就果断放弃,果然又是一个和谐的搜索呢. #include< ...

  9. 洛谷1019 单词接龙 字符串dfs

    问题描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合 ...

随机推荐

  1. [Aaronyang] 写给自己的WPF4.5 笔记17[Page实现页面导航]

    1. 第一个Page页使用 新建PageDemo解决方案,默认wpf应用程序 右键项目新建页,然后指定App.xaml的默认启动窗口,为Page1.xaml,F5运行项目 文章内容已经迁移http:/ ...

  2. Orace 12.2 ORA-12012: error on auto execute of job "SYS"."ORA$AT_OS_OPT_SY_21"

    一个测试环境的12.2.0.1数据库后台alert不断报出以下错误信息: Errors in file /d12/app/oracle/diag/rdbms/test/test/trace/test_ ...

  3. STM32云平台连接培训20180814

    MQTT基于TCP,发布订阅模式,一对多,多对一,TCP需要client主动建立connect,server发送connectack CoAP基于UDP,请求/应答模式,数据量也相对HTTP要小 HT ...

  4. [备份]EntityFramework

    本视频和分步演练介绍通过 Code First 开发建立新数据库.这个方案包括建立不存在的数据库(Code First 创建)或者空数据库(Code First 向它添加新表).借助 Code Fir ...

  5. Git 补丁操作

    补丁是文本文件,其内容是相似于Git diff,但随着代码,它也有元数据有关提交,如提交ID,日期,提交信息等,我们可以创建补丁提交和其他人可以将它们应用到自己的资料库. Jerry 为他们的项目实现 ...

  6. vue模板语法

    Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解 ...

  7. jquery easyui 中tab页添加其他页面,href与content的用法与区别

    //tab页增加 function addPanel(name,url){ var dd = $('#tt').tabs('exists',name); if(dd){ $('#tt').tabs(' ...

  8. Java知多少(94)键盘事件

    键盘事件的事件源一般丐组件相关,当一个组件处于激活状态时,按下.释放或敲击键盘上的某个键时就会发生键盘事件.键盘事件的接口是KeyListener,注册键盘事件监视器的方法是addKeyListene ...

  9. android中通过intent传递复杂数据

    android中在各个service或者acitivity之间可以通过Intent来传递一些数据,intent原生直接提供了一些简单数据类型的数据的传递,使用起来也很方便,比如int boolean ...

  10. JavaScript高级用法一之事件响应与网页交互

    综述 本篇的主要内容来自慕课网,事件响应与网页交互,主要内容如下 1 什么是事件 2 鼠标单击事件( onclick ) 3 鼠标经过事件(onmouseover) 4 鼠标移开事件(onmouseo ...