動態規劃之最大矩陣路徑
下面看程式碼:
import java.util.Scanner; //動態規劃之求矩陣的最大路徑和或者最小路徑也可以 //遞推公式:dp[i][j]=max(dp[i][j-1] , dp[i-1][]j])+map[i][j]; public class main { static int n;//矩陣的行 static int m;//矩陣的列 static int[][] map;//用來儲存矩陣資訊 static int[][] dp=new int[100][100]; public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); n=sc.nextInt(); m=sc.nextInt(); map=new int[n+1][m+1]; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { map[i][j]=sc.nextInt(); } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { dp[i][j]=Math.max(dp[i-1][j], dp[i][j-1])+map[i][j]; } } sop(dp); } public static void sop(int[][] arr){//dayin列印二維陣列的 for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { System.out.print(arr[i][j]+"\t"); } System.out.println(); } } }
在這裡我並沒有直接輸出最大路徑 而是輸出了 dp陣列以方便理解遞推公式。
有缺點望悉心指出,thanks。
相關推薦
動態規劃之最大矩陣路徑
下面看程式碼: import java.util.Scanner; //動態規劃之求矩陣的最大路徑和或者最小路徑也可以 //遞推公式:dp[i][j]=max(dp[i][j-1] , dp[
動態規劃之最大K乘積(實驗報告版)
西 安 郵 電 大 學 (計算機學院) 課內實驗報告 實驗名稱: 最大K乘積 專業名稱: 電腦科學與技術 班 級: 計科1202 學生姓名: —————— 學號(8位):———————— 指導教師: —
動態規劃之最小帶權路徑(Min Cost Path)
已知一個成本矩陣cost[][],位置(m, n)的權重是cost[][],寫一個函式,這個函式返回從(0, 0)到(m, n)的最小帶權路徑。矩陣的每個格子表示的是通過這個格子的代價。到達(m, n)的路徑總代價是這條路上所有代價和(包括出發點和終點)。你
動態規劃之最長遞增子序列(LIS)
lib sca while -c -o 組成 describe log ret 在一個已知的序列{ a1,a2,……am}中,取出若幹數組成新的序列{ ai1, ai2,…… aim},其中下標 i1,i2, ……im保持遞增,即新數列中的各個數之間依舊保持原
動態規劃之最長公共子序列(LCS)
int tdi -s can 數組下標 include har 遞推 最長公共子序列 在字符串S中按照其先後順序依次取出若幹個字符,並講它們排列成一個新的字符串,這個字符串就被稱為原字符串的子串 有兩個字符串S1和S2,求一個最長公共子串
動態規劃之最長公共子序列
圖片 輔助 length ret %s csp TP 子序列 輸出 原理請參考《算法導論》 定義常量 enum {upper_left, up, left}; #define LENGTHA (sizeof(A)/sizeof(A[0])) #define LENGTHB
動態規劃之----最長公共子序列
什麽是 資料 lcs 由於 main detail span www. 遞歸 一,問題描述 給定兩個字符串,求解這兩個字符串的最長公共子序列(Longest Common Sequence)。比如字符串1:BDCABA;字符串2:ABCBDAB 則這兩個字符串的最長
LeetCode——動態規劃——股票最大收益
股票最大收益 一、問題描述 給出每天股票的價格,設計一個演算法計算出最大收益。可以最多買賣兩個回合。而且賣出之後才能再買。 二、樣例 // 1 Input : [3, 3, 5, 0, 0, 3, 1, 4] Output : 6 Explanation : 0-3, 1-4
劍指offer:動態規劃---求最大連續子序列的和
問題描述:給一個數組,返回它的最大連續子序列的和 例如:{6,-3,-2,7,-15,1,2,2},連續子向量的最大和為8(從第0個開始,到第3個為止)。 演算法思想:當全為正數的時候,問題很好解決。但是,如果陣列中包含負數,是否應該向後擴充套件某個負數,並期望負數後面的
【動態規劃】最大子矩陣之和
最大子矩陣之和 題目描述 已知矩陣的大小定義為矩陣中所有元素的和。給定一個矩陣,你的任務是找到最大的非空(大小至少是11)子矩陣。 比如,如下44子矩陣 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 的最
動態規劃之最長單調遞增子序列(C++原始碼)
動態規劃之最長單調遞增子序列 問題: L={a1,a2,a3,…,an}既L是由n個不同的實陣列成的序列,求L的最長單調遞增子序列(下標可不連續)。 分析: 設輔助陣列b,b[i]表示以a[i]為結尾的最長遞增子序列的長度,最長遞增子序列的長度,就是陣列b的最大
動態規劃之最長公共子序列(C++原始碼)
動態規劃之最長公共子序列 問題: 在序列X={x1,x2,…,xm}與Y={y1,y2,…,yn}中查詢長度最長的公共子序列,往往不是一個。例如:X={A,B,C,B,D,A,B},Y={B,D,C,A,B,A},則公共子序列有Z={B,C,B,A},Z1={B
動態規劃之最長公共之序列
1. 子序列 摘自維基百科 在數學中,某個序列的子序列是從最初序列通過去除某些元素但不破壞餘下元素的相對位置而形成的新序列。 例如: 令 為一序列 那麼,以下序列 是 的子序列之一。對應定義裡的自然數子序列 為 ,而所對應的對映函式為 。
動態規劃之最長01子序列問題
問題描述 現在有兩個字串已知 要求的他們最長的公共子序列長度 例如csdnblog和belong的最長公共子序列是4,由於它們都含有blog這一個子序列 解題思路與演算法思想 既然使用動態規劃演算法,那麼演算法的核心就是將問題分佈 這一點和數學
動態規劃之最長上升子序列
問題描述 最長上升子序列(longest increasing subsequence),也可以叫最長非降序子序列,簡稱LIS,不是太難。即一個數的序列bi,當b1 < b2 < … < bS的時候,我們稱這個序列是上升的。對於給定的一個
第十五章動態規劃之“最優二叉查詢樹”
本書從文字翻譯的案例切入,假設把英文翻譯為法文,每個英文單詞為關鍵字,其對應法文為衛星資料。用二叉查詢樹儲存,該怎麼設計這個查詢樹。即使是紅黑樹,查詢的時間複雜度也為O(lgn)即樹的深度。但是因為文章中某個單詞出現的頻率不同,所以可能有些頻率很高的單詞比如the的深度可能
動態規劃之最長遞增子序列(Longest Increasing Subsequence)
We have discussed Overlapping Subproblems and Optimal Substructure properties in Set 1 and Set 2respectively. 我們已經在前討論了重疊的子問題與最優的子結構屬
動態規劃(1)最大連續字陣列乘積
問題描述: 給定一個浮點數陣列,任意取出陣列中的若干個連續的數相乘,請找出其中乘積最大的子陣列。 動態規劃: 概念:動態規劃一般用來求解最優化問題,其適用的條件是要求待求解的最優化問題具備兩個因素
hdu1513Palindrome(動態規劃之最長公共子序列變形+滾動陣列)
2題意: 就是填多少字元使之變成迴文字串;#include<iostream> #include<cstring> #include<queue> #include<cstdio> #include<string.h> #include<al
動態規劃:最大連續子序列乘積
題目描述: 給定一個浮點數序列(可能有正數、0和負數),求出一個最大的連續子序列乘積。 分析:若暴力求解,需要O(n^3)時間,太低效,故使用動態規劃。 設data[i]:第i個數據,dp[i]:以第