Sample Input
4
1 1
2 3
3 4
4 20
Sample Output
1 l
2 4
3 10
4 740742376475050
#include<iostream>
#include<string>
typedef long long ll;
using namespace std;
ll dp[30][30];
ll ans[30];
void init()
{
dp[1][1]=ans[1]=1;
for(int i=2;i<=20;i++)
{
for(int j=2;j<=i;j++)
{
dp[i][j]=dp[i-1][i+1-j]+dp[i][j-1];
ans[i]+=dp[i][j];
}
ans[i]<<=1;
}
}
int main()
{
int T,a,b;
cin>>T;
init();
while(T--)
{
cin>>a>>b;
cout<<a<<' '<<ans[b]<<endl;
}
return 0;
}
本文通过一个具体的递归算法实例,展示了如何初始化并利用动态规划解决特定数学问题的方法。该算法通过预处理的方式计算出一系列数值,并针对输入进行快速响应。文中详细解释了递归函数的工作原理及其优化技巧。


被折叠的 条评论
为什么被折叠?



