返回
首页

玄幻阁手机版

wap.xuanyge.org

关灯
护眼
字体:
正文卷 第一百二十二章 全国青少年信息学奥林匹克竞赛
上一页 目录 下一章
    第一百二十二章 全国青少年信息学奥林匹克竞赛 (第3/3页)



    2步骤

    如果ampapgt64输出一个解,返回上一步骤--

    (x,y)←

    计算(x,y)的八个方位的子结点,选出那些可行的子结点

    循环遍历所有可行子结点,步骤++重复2

    显然2是一个递归调用的过程,大致如下(++程序解析)

    defen8

    voiddfs(tx,ty,tunt)

    {

    ti,tx,ty

    if(untampapgtnn)

    {

    output_sotn()//输出一个解

    return

    }

    for(i=0iampaplt8i++)

    {

    tx=hn[i]x//hn[]保存八个方位子结点

    ty=hn[i]y

    s[tx][ty]=unt

    dfs(tx,ty,unt+1)//递归调用

    s[tx][ty]=0

    }

    }

    这样做是完全可行的,因为它输入的是全部解。

    但是马遍历当8x8时解是非常之多,用天文数字形容也不为过,这样一来我们的求解的过程就非常慢,并且出一个解的时间也会也非常慢。

    当我们在每个结点对其子结点进行选取的时候,优先选择‘出口’最小的进行搜索,‘出口’的意思是在这些子结点中它们的可行子结点的个数,也就是‘孙子’结点越少的越优先跳。

    如果优先选择出口多的子结点,那出口少的子结点就会越来越多,很可能出现‘死’结点

    这样对下面的搜索纯粹是徒劳,这样就会浪费很多无用的时间。

    反过来如果每次都优先选择出口少的结点跳,那出口少的结点就会越来越少,这样跳成功的机会就更大一些。

    苏牧“。。。。”

    他的脑海中再次缓缓的出现了一堆问。

    完全没想到居然会有这么大的跨越。

    看着仅仅只有一个小题,却是密密麻麻的解析,苏牧突然明白了为什么数学奥赛参加的人那么多,信息学奥赛参加的人却那么少。

    这东西,确定是适合青少年做的??

    不会秃顶吗??

    ps因为要开始上网课了要准备的东西挺多的,后面也会慢慢忙起来,所以更新时间偶尔会些变化,但是每天两更应该可以保持住

    ps2弱弱的求几张推荐票。

    。

上一页 目录 加入书签 下一章