給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...