机器人的舞蹈
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 69 Accepted Submission(s): 39
Problem Description
一 天四个不同的机器人a 、 b 、 c 和 d 在一张跳舞毯上跳舞,这是一张特殊的跳舞毯,他由 4 个正方形毯子组成一个大的正方形毯子,一开始四个机器人分别站在 4 块 毯子上,舞蹈的每一步机器人可以往临近(两个毯子拥有同一条边视为临近)的一个毯子移动或停留在原来的毯子(同一块毯子可以有多个机器人停留),这个时候 机器人的制造者你想知道经过 n 步的移动有多少种方式可以让每个毯子上都有机器人停留。
Input
对于每组数据输入一个整数n(0<=n<=100)
Output
对于每组输入输出一个整数表示方法种数,种数可能很大请对9937 取模。
Sample Input
1
Sample Output
9
Source
HDOJ 2008 Summer Exercise( 2 ) - Hold by Captain Xu
Recommend
lcy
矩阵乘法……
假设一个三维矩阵map[n][i][j] ,表示 n 步从 i 移动到 j 有几种移法,所以二维矩阵 map[n]=map[n-1]*map[1] ,也就是说从 n-1 步移动 1 步到达 n 步有几种情况。
现在只要求出矩阵map[1] 就可以了。
假设四个跳舞毯标号为
1 2
4 3
则该矩阵显然为
1,1,0,1,
1,1,1,0,
0,1,1,1,
1,0,1,1 ,
然后只要预处理一下map[1] 到 map[100] 就可以了。
之后枚举原来处于1,2,3,4 的机器人到达的位置正好一个正方形一个机器人的所有 4 !种情况,对于每种情况算出有几种走法就行了。
代码