題目:乘積最大(無高精度)
思路:f[i,k]表示前i個數劃分為k個部分獲得的最大乘積。
num[i,j]表示從i到j的字元拼成的整數。
轉移方程:f[i,k]=max 。
[1,i]這一段數由j處被分為[1,j],[j+1,i]兩段,其中規定[1,j]這一段在之前的操作中已經被分為k-1段。
注意邊界條件:f[j][1]=num[1][j]。
**:
#includeusing namespace std;
#define maxn 10
#define maxk 6
#define ll long long
int n,k;
int a[maxn+5]= ;
ll num[maxn+5][maxn+5]=; //num(i,j):i到j的數
ll f[maxn+5][maxn+5]= ; //f(i,k):前i個數被分為k段
void readin() }}
void init()
} for(int j=1;j<=k+1;j++) f[j][1]=num[1][j];
}ll dp()
} }return f[n][k+1];
}int main()
NOIP2000 乘積最大
題二 乘積最大 22分 問題描述 今年是國際數學聯盟確定的 2000 世界數學年 又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目 設有乙個長度為n的數...
Noip 2000 乘積最大
今年是國際數學聯盟確定的 2000 世界數學年 又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目 設有乙個長度為n的數字串,要求選手使用k個乘號將它分成...
2000 NOIP 乘積最大
今年是國際數學聯盟確定的 2000 世界數學年 又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目 設有乙個長度n的數字串,要求選手使用k個乘號將它分成k...