咳咳,看到别人用C++编了N多游戏,自己怎么不能编一个!
本人第一个想到的就是DL(什么)
这里要说明的是,DL不是定义表······
于是,我一气之下,决定开始编。
1.DL是什么?
1.1.基本的DL
对所谓DL的定义如下:
一个数组,有n行m列,里面都是数字,这些数字代表:
0:这个地方可以走。
1:这个地方有障碍,不能走。
4:这个地方曾经被走过。
5:这是终点。
(打个比方,谁知道这个递推题?)
上学路线
Time Limit: 1000 ms Memory Limit: 128 MBDescription
你所在城市的街道好像一个棋盘,有a条南北方向的街道和b条东西方向的街道。南北方向的a条街道从西到东依次编号为l到a,而东西方向的b条街道从南到北依次编号为l到b,南北方向的街道i和东西方向的街道j的交点记为(i,j)。
你住在(1,1)处,而学校在(a,b)处,你骑自行车去上学,自行车只能沿着街道走,而且为了缩短时间只允许沿着向东和北的方向行驶。
现在有N个交叉路口在施工(X1,Yl)、(X2,Y2)……,(Xn,Yn),这些路口是不能通车的。
问你上学一共有多少走法?
Input
第一行包含两个整数a和b,并且满足1≤a,b≤16。
第二行包含一个整数N,表示有N个路口在维修(1≤N≤40)。
接下来N行,每行两个整数X_i,Y_i,描述路口的位置。
Output
Sample Input
5 432 22 34 2
Sample Output
5
就相当于DL中的:
从(0,0)开始。假设现在的位置是(x,y),那么下一步可以走到(x+1,y)或(x,y+1)(下和右)。
如果走到的地方是0,把当前的(x,y)标记为4;
如果是1,游戏结束,返回FAIL;
如果是5,游戏结束,返回WIN。
1.2.高级功能
DL的高级功能如下:
2:这里有一个可以被收集的宝石。
3:这是一个检查点。
如果是2,将已收集到的宝石数+1;
如果是3,将(checkpointx,checkpointy)改为当前的(x,y)。