#include<stdio.h>
#include<string.h>
int dp[101][101];
void main()
{
int n,p,m,t,i,j;
while(scanf("%d%d%d%d",&n,&p,&m,&t)!=EOF)
{
memset(dp,0,sizeof(dp));
dp[m][t]=1;
for(i=m-1;i>=0;i--)
for(j=1;j<=n;j++)
{
if(j>=2)
dp[i][j]+=dp[i+1][j-1];
if(j<=n-1)
dp[i][j]+=dp[i+1][j+1];
}
printf("%d\n",dp[0][p]);
}
}
//dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1];dp[i][j]
//int a[M][T] ; 表示虫子 第 M 分钟时在 第T颗树的方法数状态转移方程为 : a[M][T] = a[M-1][T-1] + a[M-1][T + 1];2151
最新推荐文章于 2025-01-24 17:13:14 发布
本文介绍了一个使用动态规划解决虫子从特定起点爬到另一棵树的问题的算法。通过二维数组记录每分钟虫子可能到达的位置及路径数量,并实现状态转移,最终输出从起点到达终点的所有可能路径的数量。
263

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



