美文网首页
6.3 图的应用实例

6.3 图的应用实例

作者: 编程半岛 | 来源:发表于2018-06-21 14:56 被阅读10次

1. 拯救007

红色边框为岸边,原点(0,0)代表岛的中心,007(本题主角)在岛上。岛的半径为x1, 007的跳跃半径为x2,求007从岛的中心通过黑点跳跃到岸边的路径。



直到点与岸边重合为结束条件:如图


2. 总体算法

/*
 *  此处为图的连通集函数和DFS函数
 */
//**********图的连通集**********
void ListComponents (Graph G)
{
    for(each V in G)
    {
        if (!visited[V])
        {
            DFS(V);
        }
    }
}

//**********经典的DFS函数**********
void DFS(Vertex V)
{
    visited[V] = true;
    for( V的每个邻接点 W )
    {
        if( !visited[W] )
        {
            DFS(W);
        }
    }
}
/*
 *  此处为007跳跃路径相关函数(图的路径)
 */
//**********007跳跃的路径**********
void Save007 (Graph G)
{
    for(each V in G)
    {
        if (!visited[V] && FirstJump(V))    // FirstJump代表从岛上第一次调到结点的函数,其半径为岛的半径+跳跃半径
        {
            answer = DFS(V);        // 用answer标记DFS是否到达岸边,如果到达岸边,则将answer标记为“YES”
            if ( answer == YES )    // 如果有到达岸边的路径,则跳出此循环
            {
                break;
            }
        }
    }
    if ( answer == YES )
    {
        output("Yes");
    }
    else
    {
        output("No");
    }
}

//**********改良的DFS函数**********
int DFS(Vertex V)               // 将返回值改为int,为Save007函数中的anwser返回标记(如将YES定义为1,将NO定义为0)
{
    visited[V] = true;
    if ( IsSafe(V) )            // IsSafe函数表示从当前结点是否能成功调到岸上。如果能,则将answer设置为YES;如果不能,则跳跃下一个邻接点。
    {
        answer = YES;
    }
    else
    {
        for( each W in G )
        {
            if( !visited[W] && Jump(V, W) )     // Jump函数表示从V是否能跳跃到W
            {
                answer = DFS(W);
                if( anwser == YES )     // 当anwser为YES时, 即代表以及调到岸边,则退出循环
                {
                    break;
                }
            }
        }
    }
    return answer;
}

相关文章

  • 6.3 图的应用实例

    1. 拯救007 红色边框为岸边,原点(0,0)代表岛的中心,007(本题主角)在岛上。岛的半径为x1, 007的...

  • 6/100

    上午: 6.4的表格(两个) 6.3写十行 下午: 6.3写十行 加图 晚上: 总流程图 完

  • 理解应用实例和组件实例 | 思维导图

    为了方便,我将应用实例和组件实例相关内容总结为一图,如下 为了方便下载,我将相关的高清思维导图及源文件上传至Git...

  • mysql多实例

    注:本文档做了两个MYSQL实例,多个实例方法以此类推 LINUX操作系统:centOS6.3 64bit(安装了...

  • 初学Basemap

    Basemap应用实例 —— Plotting data on a map(一) Basemap应用实例 —— P...

  • 实例应用

    index.jsp request.jsp

  • this 应用实例

    this 的 绑定例外的意外收获 和使用(故¸意忽略的this、方法函数的间接引用) this 的 三种绑定 方法...

  • Attribute预定义特性及其应用

    应用实例:

  • Android 常用设计模式

    一、应用最广的模式--单例模式 概述:确保一个类只有一个实例,而且自行实例化并向整个系统或应用提供这个实例。 应用...

  • Tomcat多实例单应用部署方案

    一、Tomcat部署的场景分析 通常,我们对tomcat部署需求可以分为几种:单实例单应用,单实例多应用,多实例单...

网友评论

      本文标题:6.3 图的应用实例

      本文链接:https://www.haomeiwen.com/subject/oapqyftx.html