题目描述
考虑如下的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其他情况下: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)。
设计一个程序,快速计算w(a,b,c)并给出结果。
输入
1行整数,包含3个数值,分别对应a、b和c的值。
输出
一个数,即w(a,b,c)的结果。
样例输入 Copy
50 50 50
样例输出 Copy
1048576
#include<bits/stdc++.h>
using namespace std;
int f[21][21][21];
int a,b,c;
int dfs(int a,int b,int c)
{
if(a<=0||b<=0||c<=0) return 1;
else if(a>20||b>20||c>20) return dfs(20,20,20);
else if(f[a][b][c]) return f[a][b][c];
else f[a][b][c]=dfs(a-1,b,c)+dfs(a-1,b-1,c)+dfs(a-1,b,c-1)-dfs(a-1,b-1,c-1);
return f[a][b][c];
}
int main()
{
cin>>a>>b>>c;
cout<<dfs(a,b,c)<<endl;;
}
来源:CSDN
作者:AKone123456
链接:https://blog.csdn.net/qq_43690454/article/details/104174693