放球問題(動態規劃) 網易2018筆試題

2021-08-18 03:35:40 字數 1066 閱讀 2649

給a、b、c、d四種球,每種球有各自的質量和各自的個數,現在有乙個籃子,將球放入籃子會得到相應的分數,分數的計算方法是籃子當前的總質量的末尾數乘以放入球的質量,這樣球放入的順序不同,得到的分數不同,現在要求放入所有球的最大分數。

輸入:

1 1 1 1 11 12 13 14

輸出:

235分析:使用動態規劃

w = i * weight[0] + j * weight[1] + k * weight[2] + n * weight[3];

令x[m] = (w - weight[m]) % 10 * weight[m];

dp[i][j][k][n] = max( dp[i-1][j][k][n] +x[0], dp[i][j-1][k][n] +x[1], dp[i][j][k-1][n] +x[2], dp[i][j][k][n-1]+ x[3] );

利用string來儲存i,j,k,n,和乙個unordered_map,避免申請四維陣列。

#include 

#include

#include

#include

#include

using

namespace

std;

int fun(vector

num, vector

weight, const

int sum)

if (j > 0)

if (k > 0)

if (n > 0) }}

}}

string s;

s += num[0]; s += num[1]; s += num[2]; s += num[3];

return dp[s];

}int main()

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

int sum = 0;

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

cout

<"pause");

return

0;}

放蘋果 動態規劃

題目描述 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分發 5,1,1和1,1,5是同一種方法 輸入輸出格式 輸入格式 第一行是測試資料的數目t 0 t 20 以下每行均包括二個整數m和n,以空格分開。1 m,n 10 輸出格式 對輸入的每組資料m和n,用一行輸出相...

放蘋果(動態規劃)

題目描述 把 m 個同樣的蘋果放在 n 個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?注意 5 1 1 和 1 5 1 是同一種分法,即順序無關。輸入包含多組資料。每組資料報含兩個正整數 m和n 1 m,n 20 對應每組資料,輸出乙個整數k,表示有k種不同的分法。示例1 7 3 8...

網易筆試 動態規劃

題目雖然不難,但是初看也沒用多少思路,後來看了別人的 雖然 很短,只有簡單幾行 但是也看了好一會兒才明白,動態規劃真的很有用。貼上題目的鏈結,網易實習生的第一道程式設計題,最難的部分是動態規劃部分,如下 for int i 0 i n i for int j sum 2 j arr i j dp j...