2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
1、status transitus aequationis:
Sic formula recursiva: dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);
2. Initialization
(1) Incipiens a definitione dp[i][j], si capacitas manticae j est 0, id est, dp[i][0], cuiuscumque res selectae sunt, totus valor manticae esse debet 0 .
( 2 ) Res publica transitus aequationis dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + valor[i]); ex i-i derivatum esse videtur, ita initialized i cum 0 esse debet.
dp[0][j], hoc est: i est 0, cum deponenda item numero 0, maximum valorem quem dorsualem cuiusque capacitatis condere potest.
Tunc manifestum est, cum j < weight[0], dp[0][j] sit 0, eo quod capacitas mantica minor sit quam pondus item 0 numerati.
Cum j >= weight[0], dp[0][j] pretii esse debet [0], quia capacitas manticae capacitatis item numerus 0 retinendus est.
- for (int j = 0 ; j < weight[0]; j++) {
- dp[0][j] = 0;
- }
- // 正序遍历
- for (int j = weight[0]; j <= bagweight; j++) {
- dp[0][j] = value[0];
- }
(3) Alia subscripta initialization:
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i])
dp[1][1] = max(dp[0][1], dp[0][1- grave[i]] + valorem [i]) erit ad sinistram et supra,
Ideo debet initialized et ad quemlibet valorem apponi.
2. una dimensiva (ordinata volubilem)
1. In one-dimensionali dp ordinata, dp[j] significat: saccum cum capacitate j item cum maximo valore dp[j] ferre potest.
dp[j] = max(dp[j], dp[j - weight[i]] + value[i])
2. Initialization
(1) dp[0]=0, quia maximum momentum rerum per manticam cum capacitate 0 ferri potest.
(2) Pone valorem rerum maius quam 0;Ut non sit pretii overwritten ab initialUt dp*Ordina initializationCum omnes initio 0
3. Traversal ordinem
Percurre in ordine retrogrado
Explicatio I: Valor in fine indices determinari debet, eam comparando cum valore praecedenti consecuto in gradu praecedenti percurso.
Exponi in 2: Mantica una tantum est pro quolibet mantica. Utrum hic saccus positus sit vel non se habeat ad statum sacculi prioris dexter pendens status est sacculi currentis. In codice, numerus a sinistris requiritur ad dextram aciem determinare, sic numerus in sinistro deleri non potest antequam numerus in dextro computatus est.
Explicatio III: Duae enim dimensiones, quas quisque novus dp numerus, quem habeo, a summo et sinistro provenit; Figuras re ipsa reliquit mihi sunt updated ( Laevum latus non iam est “originale” latus sinistrum!Hoc faciet aliquid duplici numero ), etsi cacumen adhuc originalis culmen habet, numerus incor- datus est.Et si percurramus a dextra ad sinistram in strato dorsuali (strato interiore), elementum a sinistris semper eritNovae valores non erunt overscripte priori operationi meae.ut recte obtineat.
3. Application
1. Dato ordine non vacuo, integros tantum positivos continens. Num possibile est hunc ordinem in duo subsellia scindere ut summa elementorum duorum copiarum aequalis sit?
Nota: elementa in unoquoque ordinata non excedunt 100 et magnitudo ordinata non excedunt 200
Exemplum 1:
resolvere;
Item I.
Pondus est nums[i], valor nums[i] est, et volumen manticae est summa/2.
Similia sunt I sacco dorsuali
Transitus rei publicae aequatio;
dp[j] = max(dp[j], dp[j - nums[i]] + nums[i])
- // 开始 01背包
- for(int i = 0; i < nums.size(); i++) {
- for(int j = target; j >= nums[i]; j--) {
- dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]);
- }
- }
- // 集合中的元素正好可以凑成总和target
- if (dp[target] == target) return true;
2. Est acervus lapidum, et cuiusvis lapidis pondus integer positivus est.
Quodlibet rotundum, binos scopulos carpe simul et confringe. Pondera lapidum sint x et y et x <= y. Eventus deinde possibilis opprimendi sunt haec:
Si x==y, utraque saxa penitus conterentur;
Si x != y, lapis ponderis x omnino franget, lapisque ponderis y novum pondus habebit yx.
In fine, ad summum unus tantum lapis relictus erit. Redit hoc lapidis quam minimum pondus. Si lapides non desunt, 0 redditur.
Exemplum:
resolvere;
Conantur lapides in duos strues ejusdem ponderis dividere, ita ut minimus lapis post collisionem remaneat
Tum in duos strues lapidum divide. Totum unius acervi lapidum pondus dp[scopum] est, et tota congeries rogi alterius summa est.
Cum scopo calculandum, scopo = sum / 2 quia rotundum est, sic summa - dp[scopa] maior esse debet quam vel aequalis dp[scopo]
Tum minimum pondus lapidis post ictum manens est - dp[scopus]
- for (int i = 0; i < stones.length; i++) {
- //采用倒序
- for (int j = target; j >= stones[i]; j--) {
- dp[j] = Math.max(dp[j], dp[j - stones[i]] + stones[i]);
- }
- }
- //结果
- sum - 2 * dp[target];
citatis:Code Random Notes