01背包笔记

#include <bits/stdc++.h>

using namespace std;
int n[4],m[20],o=0,dp[2501];
string s;
char a;
int main()
{
    cin>>n[0]>>n[1]>>n[2]>>n[3];
    for(int i=0;i<4;i++){
        int z=0;
        for(int j=0;j<n[i];j++){
            cin>>m[j];z+=m[j];
        }

        for(int j=0;j<n[i];j++){
        for(int k=z/2;k>=m[j];k--){
            dp[k]=max(dp[k-m[j]]+m[j],dp[k]);
        }

        }
        o+=z-dp[z/2];
        for(int j=1;j<=z/2;j++)
                dp[j]=0;

    }
    cout<<o;
    return 0;
}

就是一个简单的背包,,没什么好看的

(这一题是用来解决一堆数据怎么样才能分成两份和最接近的,,,就相当于找哪几个装背包里能装的最满)

还是复习一下,背包适合求空间量的问题,也可以求最接近一个值的和,把value,空间

什么的当成1就可以了

在提供的参考内容中,涉及到Unreal Engine背包库存系统的笔记如下: - 定义了背包容器类型的枚举类,包括合成表输出、合成表输入、普通容器和快捷栏容器等类型。代码如下: ```cpp namespace EContainerType { enum Type { Output, // 合成表输出:背包合成台里的输出 Input, // 合成表输入:背包合成台里的输入 Normal, // 普通容器:背包中间那一堆,背包空间 Shortcut // 快捷栏容器:背包下面的快捷栏容器 }; } ``` 该内容可用于区分不同类型的背包容器,为背包系统的功能实现提供基础,例如在处理物品放置和取出时,可以根据容器类型进行不同的逻辑处理[^1]。 - 添加了变量用于限制背包的容量,在UE中通过`UPROPERTY`宏定义了一个可在编辑器中编辑且可在蓝图中读写的变量`InBagMaxCntLimit`,并初始化为25。代码如下: ```cpp UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "BagItemData") int InBagMaxCntLimit{25}; ``` 这一设置可以控制背包中物品的最大数量,防止背包无限容纳物品,增强了背包系统的合理性和可控性[^2]。 - 实现了考虑所有物品的所有属性的修改幅值,并应用修改器的功能。在`UMyPlayerAttributeSet`类中定义了`ModAttribute`函数,该函数接收一个物品ID的数组,通过遍历数组计算每个物品的属性修改幅值,并将结果存储在`Sum`数组中,最后应用这些修改器。代码如下: ```cpp void UMyPlayerAttributeSet::ModAttribute(TArray<int> ItemsId) { LogBaseValueMes(); TArray<FAttributeModifier> Sum{}; // 不受bIsPercent限制 for(int i: ItemsId) { CalModMagnitude(i, Sum); } UE_LOG(LogTemp, Warning, TEXT("Sum[0]-->ModName=%s PercentValue=%f AddedValue=%f"), *Sum[0].AttributeName, Sum[0].PercentValue, Sum[0].AddedValue); for(FAttributeModifier Modifier: Sum) { UE_LOG(LogTemp, Warning, TEXT("Sum-->ModName=%s PercentValue=%f AddedValue=%f"), *Modifier.AttributeName, Modifier.PercentValue, Modifier.AddedValue); ApplyModifier(Modifier); } LogBaseValueMes(); } ``` 此功能可用于在背包系统中处理物品对角色属性的影响,例如装备物品后增加角色的属性值[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值