落谷P1101 单词方阵 //未完成

 1 #include<iostream>/*cout<<endl;
 2 for(int i=1;i<=n;i++)
 3 for(int j=0;j<n;j++){
 4
 5 cout<<a[i][j];
 6 if(j==n-1)cout<<endl;
 7 }*/
 8 #include<cstring>
 9 #include<cstdio>
10 using namespace std;
11 const int wd=101;
12 bool how[wd][wd];
13 char a[wd][wd];
14 int n=0;
15 int drx[8]={0,0,1,-1,1,-1,-1,1},
16     dry[8]={1,-1,0,0,1,1,-1,-1};//方向
17 char word[7]={‘y‘,‘i‘,‘z‘,‘h‘,‘o‘,‘n‘,‘g‘}; //搜索关键字
18 inline void sar(int x,int y,int d,int c){//坐标x,y  方向   字符位置
19                      int xx=0,yy=0;
20     if(d==-1){
21         for(int i=0;i<8;i++){
22             xx=x+drx[i];
23             yy=y+drx[i];
24             if(a[xx][yy]==word[c])sar(xx,yy,i,c+1);//方向不变
25         }
26     return;
27     }
28 if(c==7){
29     x=xx;y=yy;
30     for(int i=1;i<=7;i++){
31         how[x][y]=1;
32         xx-=drx[d];
33         yy-=dry[d];
34     }
35 return;
36 }
37 xx=x+drx[d];
38 yy=y+drx[d];
39 if(a[xx][yy]==word[c])sar(xx,yy,d,c+1);
40 }
41
42 int main(){
43 scanf("%d",&n);
44 for(int i=1;i<=n;i++)scanf("%s",a[i]+1);//输入测试完成
45 for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){
46     if(a[i][j]==‘y‘)sar(i,j,-1,1);
47 }
48 for(int i=1;i<=n;i++)
49 {cout<<endl;
50 for(int j=1;j<=n;j++){
51 cout<<how[i][j];
52     if(how[i][j]==1)cout<<a[i][j];
53     else cout<<"*";
54 }}
55 return 0;
56 }
时间: 2024-08-09 06:24:14

落谷P1101 单词方阵 //未完成的相关文章

落谷P1101 单词方阵 //参考代码

1 #include<iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 const int N = 105; 6 char s[N][N], a[] = "yizhong"; 7 bool vis[N][N]; 8 int n; 9 int dx[8] = {0, 0, 1, -1, 1, 1, -1, -1}, 10 dy[8] = {1, -1,

洛谷——P1101 单词方阵

https://www.luogu.org/problem/show?pid=1101#sub 题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间[color=red]可以[/color]交叉,因此有可能共用字母.输出时,将不是单词的字母用“*”代替,以突出显示单词.例如: 输入: 8 输出: qyizhong *yizhong gydthkjy gy****** n

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

题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间[color=red]可以[/color]交叉,因此有可能共用字母.输出时,将不是单词的字母用“*”代替,以突出显示单词.例如: 输入: 8 输出: qyizhong *yizhong gydthkjy gy****** nwidghji n*i***** orbzsfgz o**z**** hhgrhwth h***

洛谷 P1101 单词方阵

不算搜索的搜索 思路和很多人的一样,因为只要找到两个字母,方向就确定了,记录下方向,剩下的暴力即可. #include<iostream> #include<cstdio> #include<algorithm> using namespace std; int n; int fx[9][2]={{0,0},{1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};//存方向,循环起来比较方便 char map[101

P1101 单词方阵【洛谷】

//题目----------------------------------------------------------------------------------------- 传送门: http://www.luogu.org/problem/show?pid=1101 P1101 单词方阵 题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间[color=

Luogu P1101 单词方阵

明明是一道水题,我还找不出 bug 来...原本在 DFS 途中记录单词串,只好使用笨方法,在结尾加一个 for 记录单词串.终于过了. 思路:枚举图中每一个点进行 DFS,途中判断访问的点是否为连续元素("yizhong"字符串中连续),如果不是返回:进行下一层 DFS,如果返回值 True 则直接层层返回 True,强行退出. 1 /* P1101 单词方阵 2 * Au: GG 3 */ 4 #include <cstdio> 5 #include <cstdl

P1101 单词方阵 简单dfs

题目描述 给一n \times nn×n的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着 88 个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间可以交叉,因此有可能共用字母.输出时,将不是单词的字母用*代替,以突出显示单词.例如: 输入: 8 输出: qyizhong *yizhong gydthkjy gy****** nwidghji n*i***** orbzsfgz o**z**** hhgrhwth h***h*** zzz

P1101 单词方阵

题目描述:给一n×n的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着 8 个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间可以交叉,因此有可能共用字母.输出时,将不是单词的字母用*代替,以突出显示单词.例如: 输入: 8 输出: qyizhong *yizhong gydthkjy gy****** nwidghji n*i***** orbzsfgz o**z**** hhgrhwth h***h*** zzzzzozo z****

洛谷P1019单词接龙 搜索

洛谷P1019 单词接龙 这道题目 我用的是搜索 应为起点已经确认了,那就从这开始搜索,如果能接上去就接上去,回溯一下需要注意的就是一些细节问题,比方说不能被另一个单词完全覆盖等等 以及字符串是从零开始的问题 1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <cstdlib> 5 #include <string> 6 #include <a