本文主要是介绍POJ数字滑雪问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
数字滑雪问题实际上是递归(动态规划)的典型问题,和走迷宫或者网络爬虫搜索策略类似。将二维数组转化为一个树的遍历算法(广度优先或者深度优先,也称作队列优先或者堆栈优先)。下面是源码,代码的核心在于此时状态到下一状态需要利用状态转移方程来获取。而问题难点在于如何利用规则设计出状态方程。然后利用递归求解(因为每个结点的遍历方式都一样)
<span style="font-size:14px;">#include <stdio.h>#define MAX 100
int skiMap[MAX][MAX]; //地图存储
int skiLength[MAX][MAX];//滑行最长距离存储
int direction[4][2]= {{1,0},{0,1},{-1,0},{0,-1}}; //四个方向的坐标变化//判断当前要访问节点(x,y)是否在地图内
bool isInSkiMap(int x, int y, int N)
{if (x >= 0 && x < N&& y >= 0 && y < N){return true;}else{return false;}
}int DepthFirstSearch(int x, int y, int N)
{if (skiLength[x][y] > 1){return skiLength[x][y];//要是该点已经处理过了,取值不是初值,直接返回该点的值即可}int maxL
这篇关于POJ数字滑雪问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!