对于动态规划,我也就不多说了。因为还不会,
每个题都不一样,但大致原则是一样的。抓住题意,
本题:n棵树,毛毛虫在m分钟内从p到t的路线种数,毛毛虫只可以向左右相邻位置走。
中心代码:
for(i = 1; i <= m; i++)
for(j = 1; j <= n; j++)
dp[i][j] += dp[i-1][j-1] + dp[i-1][j+1];
遍历所有可能时间点的位置的种数,最后得出m分钟t棵树的种数。
原题已知0时间p位置是1。好好读题。。
原题:
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3080 Accepted Submission(s): 1979
AK代码
#include<stdio.h>
#include<string.h>
#define N 105
int main()
{
int i, j, n, p, m, t;
int dp[N][N];
while(scanf("%d%d%d%d", &n, &p, &m, &t) != EOF)
{
memset(dp, 0, sizeof(dp));//多实例测试,不要忘记清零
dp[0][p] = 1;
for(i = 1; i <= m; i++)
{
for(j = 1; j <= n; j++)
dp[i][j] += dp[i-1][j-1] + dp[i-1][j+1];
}
printf("%d\n", dp[m][t]);
}
return 0;
}
原文:http://www.cnblogs.com/Tinamei/p/4381514.html