DP 最佳加法表示式

2021-10-06 01:43:21 字數 1098 閱讀 1196

小白近日沉迷演算法不可自拔

今天看到了非常經典的最佳加法表示式的題目

題意:

給m個數字,在其中新增n個加號,使得結果最小

理解:

分解成子問題—求在 m-1 個數中放加號 + 加號後的數值

準備:

定義乙個函式number(a,b)計算從a到b這些數的數值

用陣列將上面計算的數值儲存記憶,防止重複計算

轉移表示式:tmp = minnum(i,add-1) + num[i+1][num];其中i 從n到m-1,找出tmp的最小值。

建立陣列:

#include

#define maxsize 101

using namespace std;

//備忘錄num[a][b](從a到b的數的數值)

int num[maxsize]

[maxsize]

;int a[maxsize]

;int

cnum

(int a,

int b,

int a)

return data;

}void

creatnum

(int num,

int a)

}}

動規過程:

int

minnum

(int num,

int add)

return min;

}}

在主函式中輸入數字個數,加號數,數字

int

main()

creatnum

(num,a)

;/// iscreateokey--->

// for(int i = 1;i <= num;i++)

// }

cout<<

minnum

(num,add)

;return0;

}

程式可以跑成功,

希望大家發現不足幫忙指正,一起加油!

dp 最佳加法表示式

題意 有乙個由1.9組成的數字串.問如果將m個加號插入到這個數字串中,在各種可能形成的表示式中,值最小的那個表示式的值是多少。分析 假定數字串長度是n,添完加號後,表示式的最後乙個加號新增在第i 個數字後面,那麼整個表示式的最小值,就等於在前i 個數字中插入m 1個加號所能形成的最小值,加上 第i ...

dp 最佳加法表示式

有乙個由1.9組成的數字串.問如果將m個加號插入到這個數字串中,在各種可能形成的表示式中,值最小的那個表示式的值是多少 思路 這個問題我們不知道最優的加號放置方式 不妨可以從最後乙個加號開始列舉,每次列舉乙個之後記憶化遞迴下乙個,效率非常高 提前預處理字串也是很關鍵的。用dp i j 表示在前j個數...

最佳加法表示式 dp

description 有乙個由1 9組成的數字串,長度為n 1 n 100 問,如果將m m 90 個加號 插入到這個數字串中,在各種可能形成的加法表示式中,值最小的那個表示式的值是多少?本題不需考慮高精度。input 多測試用例。每個測試用例佔一行。每行是兩個整數m和n,意義如上所述。outpu...