动态规划-移动智能机器人

来源:互联网 发布:吉林大学珠海学院网络 编辑:程序博客网 时间:2024/06/03 03:48
题目:
菜鸟网络仓库有一排小货架,共有N个,货架的底部是空的,现在智能机器人在某个货架下,小明写了一个非常简单的智能机器人移动程序,逻辑如下:
每过1分钟,智能机器人必须随机的从一个货架下移动到相邻的一个货架下。比如刚开始智能机器人在第4个货架下,过1分钟后,智能机器人可能会在第3个货架下或者在第5个货架下。如果刚开始时智能机器人在第1个货架下,过1分钟以后,智能机器人一定会在第2个货架下。
 
现在告诉你货架的数目N,以及智能机器人开始所在的位置P,小明很想知道,在M分钟后,智能机器人到达第T货架,一共有多少种行走方案数。 请帮小明算一算。

输入:
货架的数量 N 智能机器人的起始位置 P 时间 M 目的地货架 T
输出:
一共有多少种行走方案数.
输入范例:
3
2
4
2
输出范例:
4

代码如下:
import java.util.Scanner;public class Main1 {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();int p = in.nextInt();int m = in.nextInt();int t = in.nextInt();in.close();int out = 0;if (n > 0 && p > 0 && p <= n && m >= 0 && t > 0 && t <= n) {int dp[][] = new int[m + 1][n + 2];// dp[0]都为0,0位置和n+1位置都为0,防止数组溢出dp[0][p] = 1;for (int i = 1; i <= m; i++) {// i分钟for (int j = 1; j <= n; j++) {// 到达j位置// i分钟到达j位置的走法数,等于i-1分钟到达j两端时走法数的和dp[i][j] = dp[i - 1][j + 1] + dp[i - 1][j - 1];}}out = dp[m][t];}System.out.println(out);}}