最大的算式

2021-07-11 05:05:18 字數 872 閱讀 7038

題目很簡單,給出n個數字,不改變它們的相對位置,在中間加入k個乘號和n-k-1個加號,(括號隨便加)使最終結果盡量大。因為乘號和加號一共就是n-1個了,所以恰好每兩個相鄰數字之間都有乙個符號。例如:

n=5, k=2,5個數字分別為1、2、3、4、5,可以加成:

1*2*(3+4+5)=24

1*(2+3)*(4+5)=45

(1*2+3)*(4+5)=45

輸入檔案共有二行,第一行為兩個有空格隔開的整數,表示n和k,其中(2<=n<=15, 0<=k<=n-1)。第二行為 n個用空格隔開的數字(每個數字在0到9之間)。

輸出檔案僅一行包含乙個整數,表示要求的最大的結果

最後的結果<=maxlongint

5 21 2 3 4 5

120對於全部的資料,n <= 100。

是乙個簡單的動態規劃【dp】問題。

#include #include #include using namespace std;

int ans[105][105];

int num[105];

int sum[105];

int main()

memset(ans, 0, sizeof(ans));

for (int i = 1; i <= n; ++i)

ans[i][0] = sum[i]; //將邊界存入答案陣列

for (int i = 1; i <= n; ++i)}}

printf("%d\n", ans[n][k]);

return 0;

}

雖然是乙個簡單的動態規劃問題,但對於目前的博主來說還是有一定的難度,希望可以繼續學習,掌握這些題目。

最大的算式

時間限制 1.0s 記憶體限制 256.0mb 題目很簡單,給出n個數字,不改變它們的相對位置,在中間加入k個乘號和n k 1個加號,括號隨便加 使最終結果盡量大。因為乘號和加號一共就是n 1個了,所以恰好每兩個相鄰數字之間都有乙個符號。例如 n 5,k 2,5個數字分別為1 2 3 4 5,可以加...

演算法訓練 最大的算式

問題描述 題目很簡單,給出n個數字,不改變它們的相對位置,在中間加入k個乘號和n k 1個加號,括號隨便加 使最終結果盡量大。因為乘號和加號一共就是n 1個了,所以恰好每兩個相鄰數字之間都有乙個符號。例如 n 5,k 2,5個數字分別為1 2 3 4 5,可以加成 1 2 3 4 5 24 1 2 ...

動態規劃 最大的算式

題目很簡單,給出n個數字,不改變它們的相對位置,在中間加入k個乘號和n k 1個加號,括號隨便加 使最終結果盡量大。因為乘號和加號一共就是n 1個了,所以恰好每兩個相鄰數字之間都有乙個符號。例如 n 5,k 2,5個數字分別為1 2 3 4 5,可以加成 1 2 3 4 5 24 1 2 3 4 5...