計蒜客 乘法遊戲

2021-07-11 18:02:36 字數 1017 閱讀 8459

乘法遊戲是在一行牌上進行的。每一張牌包括了乙個正整數。在每乙個移動中,玩家拿出一張牌,得分是用它的數字乘以它左邊和右邊的數,所以不允許拿第1張和最後1張牌。最後一次移動後,這裡只剩下兩張牌。你的目標是使得分的和最小。例如,如果數是10  1  50  20  5,依次拿1、20、50,總分是10*1*50+50*20*5+10*50*5=8000,而拿50、20、1,總分是1*50*20+1*20*5+10*1*5=1150。

輸入檔案的第一行包括牌數(3< =n< =100),第二行包括n個1-100的整數,用空格分開。

輸出檔案

只有乙個數字:最小得分

樣例輸入 6

10 1 50 50 20 5

樣例輸出

3650

解:我們可以推一下,我們要取數字,必須在1到n之間取。

那麼我們可以設某次取得是第i個數,那麼下一次取得數,必須在1-i或者i-n之間,

其他的我們可以類推。那麼最終,我們可以用乙個dfs+dp解決這道題。

#include#include#include#include#include#includeusing namespace std;

#define ll long long

const ll inf=1e9+10;

const ll maxm=1e2+10;

ll a[maxm];

ll dp[maxm][maxm];

ll n;

//void init()

////}

ll dfs(ll l,ll r)

ll sum=inf;

for(ll i=l+1;i<=r-1;i++)

dp[l][r]=sum;

return sum;

}int main()

return 0;}/*

610 1 50 50 20 5 ans:3650

*/

計蒜客 跳躍遊戲

給定乙個非負整數陣列,假定你的初始位置為陣列第乙個下標。陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。請確認你是否能夠跳躍到陣列的最後乙個下標。例如 a 2,3,1,1,4 return true.a 3,2,1,0,4 return false.格式 第一行輸入乙個正整數n,接下來的一行,輸...

計蒜客 跳躍遊戲

描述 給定乙個非負整數陣列,假定你的初始位置為陣列第乙個下標。陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。請確認你是否能夠跳躍到陣列的最後乙個下標。例如 a 2,3,1,1,4 a 2,3,1,1,4 能夠跳躍到最後乙個下標,輸出true a 3,2,1,0,4 a 3,2,1,0,4 不能...

計蒜客 跳躍遊戲

給定乙個非負整數陣列,假定你的初始位置為陣列第乙個下標。陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。請確認你是否能夠跳躍到陣列的最後乙個下標。例如 a 2,3,1,1,4 a 2,3,1,1,4 a 2,3,1,1,4 能夠跳躍到最後乙個下標,輸出true a 3,2,1,0,4 a 3,2...