今年是國際數學聯盟確定的「2000——世界數學年」,又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目:
設有乙個長度為n的數字串,要求選手使用k個乘號將它分成k+1個部分,找出一種分法,使得這k+1個部分的乘積最大。
同時,為了幫助選手能夠正確理解題意,主持人還舉了如下的乙個例子:
有乙個數字串:312, 當n=3,k=1時會有以下兩種分法:
1)3*12=36
2)31*2=62
這時,符合題目要求的結果是:31*2=62。
現在,請你幫助你的好朋友xz設計乙個程式,求得正確的答案。
第一行共有2個自然數n,k(6≤n≤10,1≤k≤6)
第二行是乙個長度為n的數字串。
輸出所求得的最大乘積(乙個自然數)。
4 21231
62
【思路】:
設f[i][k]表示在前i位數中插入k個乘號所得的最大值,a[j][i]表示從第j位到第i位所組成的自然數。用f[i][k]儲存階段k的每乙個狀態,
f[i][k]=max
#include#include#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
const
int maxn=999999999
;const
int minn=-999999999
;inline
intread()
while(c >= '
0' && c <= '
9') x = x * 10 + c - '
0', c =getchar();
return x *f;
}long
long
int n,k,a[1400][1400],f[1400][4100
];int
main()
/*拆分數
*/for(int i=2; i<=n; ++i)
}/*for(int i=1;i<=n;++i)
for(int t=1; t<=k; ++t) }}
cout
}
DFS BFS 最大乘積
今年是國際數學聯盟確定的 2000 世界數學年 又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目 設有乙個長度n的數字串,要求選手使用k個乘號將它分成k...
WinterEx 最大乘積
時間限制 1 sec 記憶體限制 128 mb 乙個正整數一般可以分為幾個互不相同的自然數的和,如3 1 2,4 1 3,5 1 4 2 3,6 1 5 2 4,現在你的任務是將指定的正整數n分解成若干個互不相同的自然數的和,且使這些自然數的乘積最大。只乙個正整數n,3 n 10000 第一行是分解...
YTU OJ 最大乘積
時間限制 1 sec 記憶體限制 128 mb 提交 292 解決 39 提交 狀態 討論版 命題人 acm4302 對於n個數,從中取出m個數,如何取使得這m個數的乘積最大呢?第一行乙個數 代表資料組數 每組資料共兩行 第一行兩個正整數n m,n,m 20 第二行給出n個整數,其中每個數的絕對值小...