01 Sac à dos: HDU2602Bone Collector

Description du problème
Il y a plusieurs années, dans la ville natale de Teddy y avait un homme qui a été appelé « Bone Collector ». Cet homme comme à Varie Collectionnez des os, comme son chien, la vache de, il est allé aussi à la tombe ...
Le collecteur d'os avait un grand sac avec un volume de V, et le long de son voyage de collecte , il y a beaucoup d'os, de toute évidence, différents os a une valeur différente et volume différent, maintenant compte tenu de la valeur de chaque os le long de son voyage, vous pouvez calculer le maximum de la valeur totale du collecteur d'os peut obtenir?

Entrée
La première ligne contient un nombre entier T, le nombre de cas.
Suivi par cas T, chaque cas trois lignes, la première ligne contient deux entiers N, V, (N <= 1000, V <= 1000) représentant le nombre d'os et le volume de son sac. Et la deuxième ligne contient des nombres entiers n représentant la valeur de chaque os. La troisième ligne contient des nombres entiers N représentant le volume de chaque os.

Sortie
un nombre entier par ligne représentant le maximum de la valeur totale (ce nombre sera inférieur à 231).

Exemple d' entrée
1
5 10
1 2 3 4 5
5 4 3 2 1

Exemple de sortie
14

La signification de problèmes:
le premier groupe de rangées d'exemples d'entrée, trois lignes et ensuite
la deuxième rangée sont entrés N, la capacité de V et le nombre de paquets représentatifs de l' os
troisième ligne de la valeur d'entrée de chaque os
capacité d'entrée du quatrième ligne de chaque os

#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
//HDU2602Bone Collector
int main()
{
    int z,N,V;
    int i,j;
    int f[100]={0};
    int vg[100]={0};
    int rg[100]={0};
    while(scanf("%d",&z)!=EOF){//输入组数
        scanf("%d%d",&N,&V);
        //再依次输入骨头价值和容量
        for(i=0;i<N;i++)
            scanf("%d",&vg[i]);
        for(i=0;i<N;i++)
            scanf("%d",&rg[i]);
            //再开始输入背包
        for(i=0;i<N;i++)
            for(j=V;j>=rg[i];j--)//逆序表达
                f[j]=max(f[j],f[j-rg[i]]+vg[i]);
        printf("%d\n",f[V]);
    }
}




Publié 72 articles originaux · louange gagné 5 · Vues 2812

Je suppose que tu aimes

Origine blog.csdn.net/qq_41115379/article/details/104919758
conseillé
Classement