資源限制
時間限制:1.0s 記憶體限制:256.0mb
問題描述
今年是國際數學聯盟確定的「2000——世界數學年」,又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目:
設有乙個長度為n的數字串,要求選手使用k個乘號將它分成k+1個部分,找出一種分法,使得這k+1個部分的乘積能夠為最大。
同時,為了幫助選手能夠正確理解題意,主持人還舉了如下的乙個例子:
有乙個數字串:312, 當n=3,k=1時會有以下兩種分法:
312=36
312=62
這時,符合題目要求的結果是:31*2=62
現在,請你幫助你的好朋友xz設計乙個程式,求得正確的答案。
輸入格式
程式的輸入共有兩行:
第一行共有2個自然數n,k(6≤n≤40,1≤k≤6)
第二行是乙個長度為n的數字串。
輸出格式
輸出所求得的最大乘積(乙個自然數)。
樣例輸入
4 21231
樣例輸出
62思路:本題與我寫過的那篇最大算式差不多一樣,都是用動態規劃的思想來解決這個題目,只不過這道題是乘法,而那道題是加法,而最重要的式子則改為:a[i][j]=max(a[i][j],a[k-1][j-1]*(a[i][0]%t1)),在乙個數當中插入乘號使之成為乙個最大的數,即每個位置都要試一遍來尋找最佳的方案,而動態規劃很好的是他可以保留每次計算最大的數值,而如果要使乙個數達到最大,必須使每次計算的值達到最大,從而挑選出最大的值,避免了過多不必要的計算。
**如下:
#include
#include
#include
#include
using
namespace std;
intmain()
t1=1;
for(i=
1;i<=n;i++
) a[i]
[j]=
max(a[i]
[j],a[k-1]
[j-1]*
(a[i][0
]%t1));
t1=1;
}}} cout<[m];
}
藍橋杯VIP試題 演算法訓練 最大獲利
資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 chakra是一位年輕有為的企業家,最近他在進軍餐飲行業。他在各地開拓市場,共買下了n個飯店。在初期的市場調研中,他將一天劃分為m個時間段,並且知道第i個飯店在第j個時間段內,會有aij位服務員當值和bij位客戶光臨。他還分析了不同...
藍橋杯VIP試題 演算法訓練 比賽安排
資源限制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 設有有2 n n 6 個球隊進行單迴圈比賽,計畫在2 n 1天內完成,每個隊每天進行一場比賽。設計乙個比賽的安排,使在2 n 1天內每個隊都與不同的對手比賽。輸入格式 輸入檔案matchplan.in共一行,輸入n的數值。輸出格式 ...
藍橋杯VIP試題 演算法訓練 排列問題
資源限制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 求乙個0 n 1的排列 即每個數只能出現一次 給出限制條件 一張n n的表,第i行第j列的1或0,表示為j 1這個數不能出現在i 1這個數後面,並保證第i行第i列為0 將這個排列看成乙個自然數,求從小到大排序第k個排列。資料規模和約...