BFS 解决蛇形填数 - NOIP1995P2

题目描述是经典的蛇形填数问题。 以前解决这类问题,通常是通过控制$i,j$的值来定位数组元素的位置,然后进行赋值。但是这种方法非常的繁琐,且难于理解。容易出错。 今天在做这道题目的时候,通过搜索资料,思索出了一种新解法,相较于原来的解法更以理解,且时间复杂度更低。解法的基本思想是 BFS。下面我们仔细来探讨一下。 首先我们定义一组偏移量数组: const int dx[] = { 1, 0, -1, 0 }; const int dy[] = { 0, -1, 0, 1 }; 这个数组的顺序必须和填数的顺序一致。在这里,它被定义为逆时针填数。 然后我们需要设置 BFS 的起点: x = 1; y = N; i = 0; f[x][y] = nNum++; 其中,$...

2013年8月22日 · 2 分钟 · 739 字 · Kai Wang