timelimit: 1 second memorylimit: 64 megabyte
description
給你乙個表示式,你可以通過在不同的地方新增括號從而改變式子的結果。比如1 + 2 * 3,如果是(1+2)*3結果是9,如果是1+2*3,結果是7,現在給你乙個這樣的式子,保證只有乘法和加法,但是也許會出現負數,求出這個式子通過不同的加括號方式,所能求得的最大結果。
input
多組資料,每組資料第一行給出乙個整數n(2<=n<=100),是所給式子的整數個數,下面包含表示式,所有整數和符號之間都會相隔乙個空格。
output
對於每組測試資料輸出乙個給出式子能算出的最大值。
sample input
41 + 2 * 3 + -1
sample output
8動態規劃題:表示式加括號
易錯點:由於輸入的數中存在負數,因此可能會出現兩個負數相乘得到乙個很大整數的情況,因此在記錄是不僅要記錄最大值,還要記錄最小值
心得:使用結構體作為函式返回物件即可返回多個值~~
第一次自己做動態規劃題,除了上面說的兩個負數相乘問題忘了考慮,其他的狀態轉移都搞出來了(雖然是道水題),還是不錯滴~~
[c++]
1 #include2 #include3 #include45#define max 2000000000
6#define min -200000000078
using
namespace
std;
910 typedef struct
sth11
data;
1516 vectornum;
17 vectors;
18 data dp[100][100
];19
20 data cmp(int a,int b,int c,int
d)21
4445 data f(int m,int
n)46
54for(int i=m;i)
5565
else
if(s[i]=='*'
)6673}
74return
dp[m][n];75}
7677
78int
main()
7993
94for(int i=1;i)
95101 cin>>tempint;
102num.push_back(tempint);
103 cout<0,n-1).max<
104}
105106
return0;
107 }
最大值最小化 題解
題目描述 把乙個包含 n 個正整數的序列劃分為 m 個連續的子串行 每個正整數恰好屬於乙個序列 設第 i 個序列的各數之和為 s i 你的任務是讓所有 s i 的最大值盡量小。例如序列 1 2 3 2 5 4 劃分成 3 個序列的最優方案為 1 2 3 2 5 4,其中 s 1 s 2 s 3 分別...
HEU 百題解1001 誰是中間的那個
誰是中間的那個 timelimit 1 second memorylimit 64 megabyte totalsubmit 1292 accepted 198 description 一天,農夫喬伊像往常一樣來到了他的牧場,他突然對他的奶牛產奶量產生了興趣。他想知道產奶量處於中間的那頭奶牛的產奶量...
力扣題解 滑動視窗最大值
題目 給定乙個陣列 nums,有乙個大小為 k 的滑動視窗從陣列的最左側移動到陣列的最右側。你只可以看到在滑動視窗內的 k 個數字。滑動視窗每次只向右移動一位。返回滑動視窗中的最大值。1 3 1 3 5 3 6 7 3 1 3 1 3 5 3 6 7 3 1 3 1 3 5 3 6 7 5 1 3 ...