4126: 递归函数(reduce)
Memory Limit:128 MB
Time Limit:1 S
Judge Style:Text Compare
Creator:
Submit:306
Solved:110
Description
【问题描述】
考虑如下的3参数递归函数w(a, b, c):
如果 a <= 0 或 b <= 0 或 c <= 0, 则 w(a, b, c)=1
如果 a > 20 或 b > 20 或 c > 20, 则 w(a, b, c)=w(20, 20, 20)
如果 a < b 且 b < c, 则 w(a, b, c)=w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c)
其它情况下
w(a, b ,c)=w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1)
这个函数很容易实现,但问题是,如果直接按照上述的结构实现,即使a、b和c的值不大 (比如, a = 15, b = 15, c = 15), 程序仍然需要几个小时才能完成大量的递归运算。
设计一个程序,快速计算w(a, b, c)并给出结果。
【输入格式】
程序的输入为一行整数,包含3个数值,分别对应a、b和c的值。
【输出格式】
输出为一个数,即w(a, b, c)的结果。
【输入输出样例】
|
输入 |
输出 |
样例1 |
1 1 1 |
2 |
样例2 |
2 2 2 |
4 |
样例3 |
-1 7 18 |
1 |
样例4 |
50 50 50 |
1048576 |