22062_FunctionRunFun

2022-5-16 18:21| 发布者: Hocassian| 查看: 24| 评论: 0|原作者: 肇庆学院ACM合集

摘要:
C:\Users\Administrator\Downloads\2019-10-12-10-14-4-8950678085699-Problem List-采集的数据-后羿采集器.html

Pro.ID

22062

Title

Function Run Fun

Title链接

http://10.20.2.8/oj/exercise/problem?problem_id=22062

AC

48

Submit

107

Ratio

44.86%

时间&空间限制

  • Time Limit: 200/100 MS (Java/Others)     Memory Limit: 32768/32768 K (Java/Others)
  • 描述

    We all love recursion! Don't we?

    Consider a three-parameter recursive function w(a, b, c):

    if a <= 0 or b <= 0 or c <= 0, then w(a, b, c) returns:

     1

    if a > 20 or b > 20 or c > 20, then w(a, b, c) returns:

       w(20, 20, 20)

    if a < b and b < c, then w(a, b, c) returns:

       w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c)

    otherwise it returns:

    w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1)

    This is an easy function to implement. The problem is, if implemented directly, for moderate values of a, b and c (for example, a = 15, b = 15, c = 15), the program takes hours to run because of the massive recursion.

    输入

    The input for your program will be a series of integer triples, one per line, until the end-of-file flag of -1 -1 -1.

    Using the above technique, you are to calculate w(a, b, c) efficiently and print the result.

    输出

    Description

    We all love recursion! Don't we?

    Consider a three-parameter recursive function w(a, b, c):

    if a <= 0 or b <= 0 or c <= 0, then w(a, b, c) returns:

     1

    if a > 20 or b > 20 or c > 20, then w(a, b, c) returns:

       w(20, 20, 20)

    if a < b and b < c, then w(a, b, c) returns:

       w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c)

    otherwise it returns:

    w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1)

    This is an easy function to implement. The problem is, if implemented directly, for moderate values of a, b and c (for example, a = 15, b = 15, c = 15), the program takes hours to run because of the massive recursion.

    Input

    The input for your program will be a series of integer triples, one per line, until the end-of-file flag of -1 -1 -1.

    Using the above technique, you are to calculate w(a, b, c) efficiently and print the result.

    Output

    Print the value for w(a, b, c) for each triple.

    Sample Input

    1 1 1
    2 2 2
    10 4 6
    50 50 50
    -1 7 18
    -1 -1 -1

    Sample Output

    w(1, 1, 1) = 2
    w(2, 2, 2) = 4
    w(10, 4, 6) = 523
    w(50, 50, 50) = 1048576
    w(-1, 7, 18) = 1

    Source

    样例输入

    1 1 1
    2 2 2
    10 4 6
    50 50 50
    -1 7 18
    -1 -1 -1

    样例输出

    w(1, 1, 1) = 2
    w(2, 2, 2) = 4
    w(10, 4, 6) = 523
    w(50, 50, 50) = 1048576
    w(-1, 7, 18) = 1

    作者


    路过

    雷人

    握手

    鲜花

    鸡蛋

    最新评论

    返回顶部