原題位址
劃分型
dp字串
解題思路
1.預處理一下,把i到j擷取的子串轉化為數字;
2.明確dp陣列表示的狀態,f[i][k]表示在前i個字元劃分k次得到的最大乘積;
3.初始化,f[i][0]=t[0][i](0<=i
4.三重迴圈跑dp,最外層列舉劃分次數,第二層列舉i,最內一層列舉斷點(斷點在0到i-1範圍),將大問題分解成「0~i區間內劃分k次得到的最大乘積」。將j+1~i看作乙個數,0~j看作已處理好的,那麼就很容易得到狀態轉移方程:
f[i][k]=max(f[i][k],f[j][k-1]*t[j+1][i])
參考**
#include#include#include#include#includeusing namespace std;
int f[45][10],t[45][45];
int main()
{ intn,kk;
strings;
cin>>n>>kk;
cin>>s;
intnum;
for(int i=0;i
洛谷 P1018 乘積最大
題目描述 今年是國際數學聯盟確定的 2000 世界數學年 又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目 設有乙個長度為n的數字串,要求選手使用k個乘...
洛谷P1018 乘積最大
洛谷p1018 乘積最大 題意 給乙個長度為n的數字串,在這個數字串中插入k個乘號,使得表示式的乘積最大 分析一下 算了,懶得分析了,中有詳細注釋,直接看 吧 君 include using namespace std const int maxn 45 struct biginteger bigi...
洛谷 P1018 乘積最大
今年是國際數學聯盟確定的 20002000 世界數學年 又恰逢我國著名數學家華羅庚先生誕辰 9090 周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友 xzxz 也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目 設有乙個長度為 nn 的數字串...