落谷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, 0, 0, 1, -1, 1, -1};
11 void dfs(int x,int y,int w,int i)//x,y,表示坐标,w表示方向,i表示第几个字符。
12 {
13     if(w==-1)//如果是第一次找
14     {
15         for(int j=0;j<8;j++)
16         {
17             int xx=x+dx[j];
18             int yy=y+dy[j];
19             if(s[xx][yy]==a[i])
20               dfs(xx,yy,j,i+1);//扩展搜索;
21         }
22         return;
23     }
24     if(i==7)//如果已经找到这个字符串,回溯标记。
25     {
26         int xx=x,yy=y;//目前的位置给xx,yy
27         for(int j=1;j<=7;j++)
28          {
29                vis[xx][yy]=1;//标记找完的位置
30                xx=xx-dx[w];
31                yy=yy-dy[w];
32          }
33          return;
34     }
35     int xx=x+dx[w];
36     int yy=y+dy[w];
37     if(s[xx][yy]==a[i])
38       dfs(xx,yy,w,i+1);
39 }
40 int main()
41 {
42     memset(s,‘*‘,sizeof s);
43     scanf("%d",&n);
44     for(int i=1;i<=n;i++)
45       scanf("%s",s[i]+1);
46     for(int i=1;i<=n;i++)//搜索到的开始字母
47     {
48         for(int j=1;j<=n;j++)
49           if(s[i][j]==‘y‘) dfs(i,j,-1,1);
50     }
51     for(int i=1;i<=n;i++)//输出
52  {
53        cout<<endl;
54       for(int j=1;j<=n;j++)
55       {
56          if(vis[i][j]) cout<<s[i][j];
57          else cout<<‘*‘;
58       }}
59  return 0;
60 }
时间: 2024-10-21 14:29:35

落谷P1101 单词方阵 //参考代码的相关文章

落谷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

洛谷——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****

js页面跳转参考代码大全

整理一下JS页面跳转参考代码 第一种:     <script language=/"javascript/" type=/"text/javascript/"> window.location.href=/"login.jsp?backurl=/"+window.location.href; </script> 第二种:     <script language=/"javascript/"&g