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; ; }
点击展开