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)

这个函数很容易实现,但问题是,如果直接按照上述的结构实现,即使abc的值不大 (比如, a = 15, b = 15, c = 15), 程序仍然需要几个小时才能完成大量的递归运算。

设计一个程序,快速计算w(a, b, c)并给出结果。

【输入格式】

程序的输入为一行整数,包含3个数值,分别对应abc的值。

【输出格式】

输出为一个数,即w(a, b, c)的结果。

【输入输出样例】

 

输入

输出

样例1

1 1 1

2

样例2

2 2 2

4

样例3

-1 7 18

1  

样例4

50 50 50

1048576

加入题单

上一题 下一题 算法标签: