最大的算式

2021-10-21 01:44:50 字數 893 閱讀 3970

時間限制:1.0s 記憶體限制:256.0mb

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

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

12(3+4+5)=24

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

(12+3)*(4+5)=45

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

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

5 21 2 3 4 5

120樣例說明

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

#include

# define max(a, b) a > b ? a : b

int sum[16]

;//前 i 個數字的和

long

long dp[16]

[16];

//前i個數字在含有j個*號的情況下的最大(乘積、和)值

intmain()

//沒有*號時為前i個數的和

for(

int i =

1; i <= n; i++

) dp[i][0

]= sum[i]

;for

(int i =

1; i <= n; i++)}

}printf

("%i64d"

, dp[n]

[k])

;return0;

}

最大的算式

題目很簡單,給出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...

演算法訓練 最大的算式

問題描述 題目很簡單,給出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...