zoukankan      html  css  js  c++  java
  • A1091 Acute Stroke (30 分)

    一开始照着二维数组的逻辑去做,按照周围八个点的顺序遍历,居然 PA 也有 21 分... 后来自己找了好几个例子仍然没办法通过,这一看晴神的解析才发现这题是按三维数组去做的,而且遍历顺序是题目 Figure-1 的那 6 个点,emmm

    三维数组大致如下( z 轴我只画了两层):

    然后基本上套模板就行了,总的下来解 BFS() 主要是这三个方面

    /* 看到 BFS() 要想到 */
    
    1、晴神给的模板
    2、坐标点的有效条件
    3、什么样的坐标点才算是 "附近的点"

    对于这道题,这样填充套模板:

    /* 1、晴神给的模板 */
    int
    bfs(起点s) { /* 起点入队 */ queue<node_t> q; q.push(s); inq[坐标点] = true; while (!q.empty()) { /* 访问队头,然后出队 */ node_t top = q.front(); q.pop(); /* bfs() 遍历 */ for (遍历 top 周围) { if (这个坐标点有效) { 入队(这个坐标点); inq[这个坐标点] = true; } } } }

    (由于这道题要数点,所以后面要稍微改改,需要在 BFS() 的同时记录遍历到的 "有效" 点的数量)

    模板中主要关注两处:1)  for() 循环条件:"遍历 top 周围"2) for() 循环里面的 if() 的条件:"坐标点有效"

    /* 2、坐标点的有效条件 */
    bool isValid(坐标点的各维度坐标..) {
        if (越界)    return false;
        if (该坐标点等于 0 || 该坐标点入队过)    return false;
        return true;
    }
    
    /* 3、什么样的坐标点才算是 "附近的点" */
    这道题是六个方位:左、右、前、后、上、下

    根据这些逻辑填充好模板就 ojbk

    点击获取完整代码

  • 相关阅读:
    How to Use .Net Remoting Using C#
    How to: Build a Client Application
    C# 禁用鼠标中间键
    秒杀系统:设计方案与实现思路
    JDBC连接数据库
    Java调用webService示例
    spring MVC
    rust贪吃蛇
    初识智遥工作流软件——表单开发篇2
    初识智遥工作流软件——表单开发篇1
  • 原文地址:https://www.cnblogs.com/bEngi1/p/14409404.html
Copyright © 2011-2022 走看看