動態規劃-移動智能機器人

題目:
菜鳥網絡倉庫有一排小貨架,共有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);

	}

}


發佈了20 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章