zoukankan      html  css  js  c++  java
  • 洛谷 P1101 单词方阵(dfs)

    嗯...

    题目链接:https://www.luogu.org/problem/P1101

    这道题与普通的方向dfs只需确定它dfs的方向,然后用一个结构体记录路径,用一个数组确定它搜索的方向。

    AC代码:

     1 #include<cstdio>
     2 #include<iostream>
     3 
     4 using namespace std;
     5 
     6 int n;
     7 char mp[105][105];
     8 int vis[105][105];
     9 string a = "yizhong";
    10 int dir[8][2] = {{1, 0}, {-1, 0}, {1, -1}, {-1, 1}, {1, 1}, {-1, -1}, {0, 1}, {0, -1}};
    11 
    12 struct node{
    13     int x, y;
    14 } c[105];
    15 
    16 inline int dfs(int x, int y, int cur, int d1, int d2){
    17     if(cur == 7){
    18         for(int i = 0; i <= 6; i++){
    19             vis[c[i].x][c[i].y] = 1;
    20         }
    21     }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
    22     else{
    23         int nx = x + d1;
    24         int ny = y + d2;
    25         if(mp[nx][ny] == a[cur+1] || cur == 6){
    26             c[cur].x = x;
    27             c[cur].y = y;
    28             dfs(nx, ny, cur+1, d1, d2);
    29         }
    30     }
    31 }
    32 
    33 int main(){
    34     scanf("%d", &n);
    35     for(int i = 0; i < n; i++){
    36         for(int j = 0; j < n; j++){
    37             cin >> mp[i][j];
    38         }
    39     }
    40     for(int i = 0; i < n; i++){
    41         for(int j = 0; j < n; j++){
    42             if(mp[i][j] == 'y'){
    43                 for(int x = 0; x < 8; x++){
    44                     int nx = i + dir[x][0];
    45                     int ny = j + dir[x][1];
    46                     if(mp[nx][ny] == 'i'){
    47                         c[0].x = i; c[0].y = j; c[1].x = nx; c[1].y = ny;
    48                         //vis[nx][ny] = 1;
    49                         dfs(nx, ny, 1, dir[x][0], dir[x][1]);
    50                     }
    51                 }
    52             }
    53         }
    54     }
    55     for(int i = 0; i < n; i++){
    56         for(int j = 0; j < n; j++){
    57             if(vis[i][j]) cout << mp[i][j];
    58             else printf("*");
    59         }
    60         cout << endl;
    61     }
    62     return 0;
    63 }
    AC代码
  • 相关阅读:
    1044 拦截导弹
    3060 抓住那头奶牛 USACO
    2727:仙岛求药(广搜)
    4906 删数问题(另一种贪心思路)
    1004 四子连棋
    1005 生日礼物
    1031 质数环
    1008 选数
    1073 家族
    2801 LOL-盖伦的蹲草计划
  • 原文地址:https://www.cnblogs.com/New-ljx/p/11914144.html
Copyright © 2011-2022 走看看