路徑最小問題

2021-09-10 08:56:11 字數 1943 閱讀 9748

問題

給你乙個二維陣列,二維陣列中的每個數都是正數,要求從左上角走到右下角,每一步只能向右或者向下。沿途經過的數字要累加起來。返回最小的路徑

經典的動態規劃問題

請記住這樣一句話:每乙個優美的動態規劃,都來自原先暴力的嘗試

package class_08;

public class code_07_minpath

public static int process1(int matrix, int i, int j)

if (i == 0 && j != 0)

if (i != 0 && j == 0)

return res + math.min(process1(matrix, i, j - 1), process1(matrix, i - 1, j));

} public static int minpath2(int m)

int row = m.length;

int col = m[0].length;

int dp = new int[row][col];

dp[0][0] = m[0][0];

for (int i = 1; i < row; i++)

for (int j = 1; j < col; j++)

for (int i = 1; i < row; i++)

} return dp[row - 1][col - 1];

} // for test

public static int generaterandommatrix(int rowsize, int colsize)

int result = new int[rowsize][colsize];

for (int i = 0; i != result.length; i++)

} return result;

} public static void main(string args) , , , };

system.out.println(minpath1(m));

system.out.println(minpath2(m));

m = generaterandommatrix(6, 7);

system.out.println(minpath1(m));

system.out.println(minpath2(m));

}}

附加題

給你乙個陣列arr,和乙個整數aim。如果可以任意選擇arr中的數字,能不能累加得到aim,返回true或者false。

package class_08;

public class code_08_money_problem

public static boolean process1(int arr, int i, int sum, int aim)

// sum != aim

if (i == arr.length)

return process1(arr, i + 1, sum, aim) || process1(arr, i + 1, sum + arr[i], aim);

} public static boolean money2(int arr, int aim)

for (int i = arr.length - 1; i >= 0; i--)

}} return dp[0][0];

} public static void main(string args) ;

int aim = 12;

system.out.println(money1(arr, aim));

system.out.println(money2(arr, aim));

}}

乘積最小問題

乘積最小問題 今天看到三個這樣的題 最小乘積生成樹,hnoi2014 畫框,不講武德 大概就是乙個物品有兩種特徵值 a,b 他的代價是 sum a times sum b p5540 最小乘積生成樹 第一感覺這種題和 wqs 二分有點關係,結果發現沒有什麼關係.這種題都是一種套路吧,第一次見的話很難...

字典序最小問題

給定長度為n的字串s,要構造乙個長度為n的字串t。起初,t 是乙個空串,隨後反覆進行下列 任意 操作。1 從 s 的頭部 刪除乙個 字元,加到 t的 尾部 2 從 s 的尾部 刪除乙個 字元,加到 t 的 尾部 你的 目標是 要構造字典序盡可能小的字串 t。s 只包含大寫英文本母 輸入10 asdf...

簡單的最大最小問題

例表tb id price netprice 1 8.00 20.00 2 10.00 5.00 3 0.00 3.00 我想要查出price與netprice之間大的列 比如查出如下資料 id newprice 1 20.00 2 10.00 3 3.00 sql語句要怎麼寫?create tab...