對於選定若干種物品,然後要求從裡面選出特定種物品,使得價值最大的問題。這種金明問題有兩種:
型別1一種是每個物品可以選1次,選了就沒有了,此時令dp[i][j]表示可以選擇前i種,並且選完之後恰好花費j元。此時dp[i][j]的劃分為
d[i][j]=
型別2每種物品可以任意選取多次,此時令dp[i][j]表示可以選擇前i種,並且選完之後恰好花費j元。(也就是和前面定義相同)
此時dp[i][j]的劃分為
dp[i][j]=
此時**會變成如下所示
int main()
dp[0] = 0;
memset(dp, 0, sizeof(dp));
int tempmax=0;
for (int i = 1; i <= n; i++)
} }cout << dp[n];
return 0;
}
對於動態規劃的查表方法dp[i][j],可以發現,對於i和j在不同題目中會有不同的要注意的點,以本題為例
對於j,要注意到是恰好花完j元,因此正常來說要遍歷第i行的元素的。
對於i,要注意到餘下的錢是可以買i種還是可以買i-1種
開心的金明 動態規劃 洛谷
金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過n元錢就行 今天一早金明就開始做預算,但是他想買的東西太多了,肯定會超過媽媽限定的n元。於是,他把每件物品規定了乙個重要度,分為5...
開心的金明(洛谷)
問題描述 金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過 n 元錢就行 今天一早金明就開始做預算,但是他想買的東西太多了,肯定會超過媽媽限定的 n 元。於是,他把每件物品規定了...
洛谷 P1060 開心的金明(動態規劃)
金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過nn元錢就行 今天一早金明就開始做預算,但是他想買的東西太多了,肯定會超過媽媽限定的nn元。於是,他把每件物品規定了乙個重要度,分...