第一百二十二章 全国青少年信息学奥林匹克竞赛(2 / 2)

不好了。

经典习题在8x8方格的棋盘上,从任意指定方格出发,为马寻找一条走遍棋盘每一格并且只经过一次的一条路径。

解析首先这是一个搜索问题,运用深度优先搜索进行求解,算法如下

1输入初始位置坐标x,y;

2步骤 c:

如果ca 64输出一个解,返回上一步骤c

x,y c

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

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

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

defe n 8

void dfst x,t y,t unt

{

t i,tx,ty

ifuntann

{

oututtn输出一个解

return

}

fori0 iat8 i

{

txhnxhn保存八个方位子结点

tyhny

stxtyunt

dfstx,ty,unt1递归调用

stxty0

}

}

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

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

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

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

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

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

苏牧“。”

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

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

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

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

不会秃顶吗

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

s2:弱弱的求几张推荐票。请牢记收藏,网址 最新最快无防盗免费阅读