設有乙個長度為n的數字字串,分成k+1個部份,使其k+1部份相加的和為最大。例如:數字串』340670』,k=1,其加法有 :3+40670=40673 34+0670=704 340+670=1010 3406+70=3476 34076+0=34076
其最大和為40676。問題:當數字串和k給出後,找出乙個分法使和為最大。
6 1
340670
這道題目是區間動態規劃的經典題目之一,等同於乘法最大,只不過將乘號換成加號而已。
#include
#include
using
namespace
std;
long
long a[11][11],f[11][11],s;
int n,i,k,k1,j;
int main()
for (i=2;i<=n;i++)
for (j=i-1;j>=1;j--)
a[j][i]=a[j][i-1]*10+a[i][i];
for (i=1;i<=n;i++)
f[i][0]=a[1][i];
for (k=1;k<=k1;k++)
for (i=k+1;i<=n;i++)
for (j=k;j1]+a[j+1][i]); //乘號換成加號
printf("%lld\n",f[n][k1]);
return
0; }
SSL 加法最大
設有乙個長度為n的數字字串,分成k 1個部份,使其k 1部份相加的和為最大。例如 數字串 340670 k 1,其加法有 3 40670 40673 34 0670 704 340 670 1010 3406 70 3476 34076 0 34076 其最大和為40673。問題 當數字串和k給出後...
java SWT實現最簡單的加法器
練練手 從這裡學的 難點 怎樣把輸入字串轉換成double型 import org.eclipse.swt.swt public class test catch exception e open the window.public void open create contents of the ...
大數問題 大數加法 與 大數乘法 最簡單大數乘法
大數加法很簡單,大叔乘法只是以大數加法為基礎的,光從難度來說,兩者差不多。先舉乙個簡單的例子 所以乘法就是每一位個位數相乘再乘以多少次方就可以了,這個多少次就是兩者的陣列位置的索引相加。看看關鍵 for int i 0 i alen i else result plus result,c heigh...