DP Series de arranque - -01 mochila mochila problema

problema da mochila -01 mochila

problema da mochila tem sido muito utilizado para ratos estudo DP, para o problema da mochila que eu tenho em DFS tem mantido ao longo dos castanhas, por isso desta vez nós pensamos com a transição para aprender sobre a 01 mochila.
O que é a mochila 01-lo? Isso significa que este item não ter problema com a exploração. Em outras palavras, quando confrontado com a decisão que tenho duas opções, tomar e não tomar. Mas não começa a ter e terá um impacto sobre os resultados de volta, de modo que você não pode olhar melhor solução (solução ideal, vou usar o seguinte esboço para OPT). Então só podemos colocar todos os casos enumerados e, em seguida, selecionar, processo de seleção, temos um monte de problemas, é claro, o problema para DP é a dupla contagem, assim que nós consideramos como o suficiente transição de estado para resolver este problema.
Em primeiro lugar, eu recomendo um blog DP essencial iniciante, WOC também Niubi! ! ! QAQ
Portanto, vamos ter um sujeito carregando uma cortina para nos revelar hoje.

título Descrição

Existem N itens V e uma capacidade da mochila. Cada item só pode ser usado uma vez. Volume é os itens i-th vi, um valor wi. Que resolver os itens para o saco, o volume total desses itens não pode exceder a capacidade da mochila, eo valor total do máximo. O valor máximo de saída.

Formato de entrada

A primeira linha de dois inteiros N, V, separados por espaços, respectivamente, e o número de artigos do volume de mochila. Para baixo existem N linhas, cada linha, dois inteiros vi wi, separados por espaços, respectivamente, e o volume do i-ésimo valor dos artigos.

Formato de saída

Saída Um inteiro representando o valor máximo.

Intervalo de dados

0 <N, V≤1000
0 <nós, wi≤1000

Entrada de amostra

4 5
1 2
2 4
3 4
4 5

Exemplo de saída

8

submeter

OK Usamos dois métodos para entender e resolver o problema.
Em primeiro lugar, o problema da mochila é a eleição e não voto para o problema, se eleito, vai reduzir o volume mochila, o valor vai aumentar, por isso temos de estudar cada utilização máxima selecionada de espaço valor remanescente depois de um livro.

Então, devemos começar a partir do espaço restante, quanto do espaço restante, temos apenas encontrar a solução ideal.
Então deixe o espaço restante a partir de 1 de começar a pensar (um total de seis tipos de caso restante espaço é 0,1,2,3,4,5, respectivamente) destes seis, e cada um o espaço restante será decidido pelo último espaço restante, Se a presença de uma presença residual neste artigo, então o valor não escolher esse que o valor atual de itens menores.

#include<bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
typedef long long ll;
int f[1010][1010];
int n,m;
int v[10000],w[10000];
int main()
{
 cin>>n>>m;
 for(int i=1;i<=n;i++)cin>>v[i]>>w[i];
 for(int i=1;i<=n;i++)
 for(int j=0;j<=m;j++)
 {
  f[i][j]=f[i-1][j];
  if(j>=v[i])
  f[i][j]=max(f[i][j],f[i-1][j-v[i]]+w[i]);
 }
 int res=0;
 for(int i=0;i<=m;i++)res=max(res,f[n][i]);
 cout<<res<<endl;
 return 0;
 } 

Discussão sobre o posicionamento repetido da questão, o estado atual é colocado não parecem propensos a repetir, porque ele agora vai colocar cada coisa e espera será colocado em diferentes dimensões entre as diferentes dimensões a serem transferidos.
Portanto, não há problema repetindo colocado.
Mas a matriz unidimensional, se é que existe tal caso.
Aqui, o código para uma matriz unidimensional da luz

#include<bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
typedef long long ll;
int w[1010],v[1010];
int f[200000];
int main()
{
 int n,m;
 cin>>n>>m;
 for(int i=0;i<n;i++)cin>>w[i]>>v[i];
 for(int i=n;i>=0;i--)
 for(int j=m;j>=w[i];j--)
  f[j]=max(f[j],f[j-w[i]]+v[i]);
  cout<<f[m]<<endl;
 } 

Você vai encontrar o meu código está circulando na ordem inversa porque, se eu fosse de sequência positiva, então não será possível repetir os artigos anteriores colocados. Se você vai em ordem inversa, então, não colocar antes de cada atualização são baseados no estado do objeto são transferidos. Portanto, não haverá repetição do problema. Então, se você atualizado com base na atualizado, ele é provável que este vai repetir itens colocados!
mês roda por-

Publicado 32 artigos originais · ganhou elogios 12 · vista 1195

Acho que você gosta

Origin blog.csdn.net/qq_35339563/article/details/103580729
Recomendado
Clasificación