問題描述:
東東開車出去泡妞(在夢中),車內提供了 n 張cd唱片,已知東東開車的時間是 n 分鐘,他該如何去選擇唱片去消磨這無聊的時間
我們需要找到最能消磨時間的唱片數量,並按使用順序輸出答案(必須是聽完唱片,不能有唱片沒聽完卻到了下車時間的情況發生)
思路解析:
1.0-1揹包問題,n個物品對應m張唱片,揹包體積v對應開車時間n,物品的體積w[i]和價值v[i]都是唱片時長。要求最終揹包容量至多為v,且要按順序輸出所放物品。
2.vis[i][j]陣列來記錄當容量為j的時候選擇了物品i,用於輸出,更新當前揹包容量。
3.通過比較dp[v]<=dp[v-volume[i]]+volume[i],決定要不要選擇第i張cd,更新dp。
**實現:
#include
#include
using
namespace std;
const
int n=
10005
;int volume[n]
;int dp[n]
;bool vis[25]
[n];
intmain()
for(
int i=
0; i++i)}}
for(
int i=n-
1,j=v; i>=
0; i--)}
printf
("sum:%d\n"
,dp[v]);
}return0;
}
東東開車了 Week11作業F題
東東開車出去泡妞 在夢中 車內提供了 n 張cd唱片,已知東東開車的時間是 n 分鐘,他該如何去選擇唱片去消磨這無聊的時間呢 輸入 多組輸入 每行輸入第乙個數字n,代表總時間,第二個數字 m 代表有 m 張唱片,後面緊跟 m 個數字,代表每張唱片的時長 例如樣例一 n 5,m 3,第一張唱片為 1 ...
Week11作業 A 必做題 11
題目 蒜頭君從現在開始工作,年薪 n 萬。他希望在蒜廠附近買一套 60 平公尺的房子,現在 是 200 萬。假設房子 以每年百分之 k 增長,並且蒜頭君未來年薪不變,且不吃不喝,不用交稅,每年所得 n萬全都積攢起來,問第幾年能夠買下這套房子?第一年年薪 n 萬,房價 200 萬 輸入格式 一行,包含...
01揹包 回溯 東東開車了
東東開車出去泡妞 在夢中 車內提供了 n 張cd唱片,已知東東開車的時間是 n 分鐘,他該如何去選擇唱片去消磨這無聊的時間呢 假設 input 多組輸入 每行輸入第乙個數字n,代表總時間,第二個數字 m 代表有 m 張唱片,後面緊跟 m 個數字,代表每張唱片的時長 例如樣例一 n 5,m 3,第一張...