Codevs 1910递归函数

时间:2023-03-08 16:32:58
Codevs 1910递归函数

1910 递归函数

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold
题目描述 Description

对于一个递归函数w(a, b, c)。

如果a <= 0 or b <= 0 or c <= 0就返回值1。

如果a > 20 or b > 20 or c > 20就返回W(20,20,20)。

如果a < b并且b < c 就返回w(a, b, c − 1) + w(a, b − 1, c − 1) − w(a, b − 1, 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)

这是个简单的递归函数,但实现起来可能会有些问题。

输入描述 Input Description

会有若干行.每行三个数,表示a, b, c。并以−1, −1, −1结束

输出描述 Output Description

输出若干行,注意各种中的空格。

样例输入 Sample Input

1 1 1
2 2 2
-1 -1 -1

样例输出 Sample Output

w(1, 1, 1) = 2
w(2, 2, 2) = 4

数据范围及提示 Data Size & Hint

a, b, c < 30, Task < 11

传送门   ->>

      ^

      |

这题用了数学思维 是我手(chao)写(xi)的。

#include <iostream>
#include <cstdlib>
using namespace std;
int w(int a,int b,int c)
{
    ||b<=||c<=) ;
    ||b>||c>) ,,);
    else if(a<=b||a<=c)
    {
        ;
        ;j<a;j++)
        i*=;
        return i;
    }
    ,b,c)+w(a-,b-,c)+w(a-,b,c-)-w(a-,b-,c-);
}
int main()
{
       ][],i,j;
       ;i<;i++)
       {
              cin>>a[i][]>>a[i][]>>a[i][];
              ]==-&&a[i][]==-&&a[i][]==-) break;
       }
       ;j<i;j++)

               cout<<]<<]<<]<<],a[j][],a[j][])<<endl;
       ;
}

点击展开