暂无标题

暂时标题不公开

关于多维有界背包问题,在网上有很多实现的代码(如:多维有界背包问题),但是这些代码都是只是涉及到动态规划部分,而规划完成后的寻找各个物品的分配情况却没有实现,由于本人和同学需要实现这一功能,所以就在分析经典0-1背包问题的基础上实现了我们所需要的功能。


本函数所实现的是2018年华为软件精英比赛赛题的一部分功能,由于比赛还在进行中,所以算法暂不放出了,先把前期工作写一下


首先说明函数中的参数

void dynamicProg(flavor *flavors,server *servers,int *flaRemain,int flaNum,int serNum,int type_i, int *allocNum)

flavor :为结构体,虚拟机,也可以理解为物品,定义如下:
server :也是结构体,服务器,可以理解为书包
flavor 和 server中的 cpu 和mem 也就是需要考虑的两个维度
flaRemain 是一个数组,所记录的是每种flavor可以最多选择的个数,也就是边界。

struct flavor
{
    int type;     // flavor type, type=18 represent flavor18
    int cpu;      // cpu cores  
    int mem;      // memory
    int pred_num; // predict number of the flavor type
    int server;   // allocate to the server, default:-1 denote not allocated yet
};
struct server
{
    char *type;     // server type
    int mem;        // memory
    int cpu;        // cpu cores
    int remain_cpu; // remaining cpu
    int remain_mem; // remaining memory
//  MAT alloc;      // allocate info  ------attension: MAT->double,should turn int in output_file------
    intMat alloc;// allocate info  ------attension: MAT->double,should turn int in output_file------
};

flavors 等可表示如下:

flavors (多种)CPU MEMflaRemainservers(三种)server CPU MEM
flavor11,120(个)server056,128
flavor31,232(个)server1128,256
flavor52,42(个)serever2256,512
flavor184,845(个)

type_i:对应的是服务器的种类 0,1,2
allocNum:也是一个和flavors同大小的数组,存储的是各个种类的flavor经过动态规划后往服务器server中存储的数量。如allocNum[0]表示的flavors[0]中的虚拟机被存储的个数。
flaNum:表示的是虚拟机种类的个数,也就是flavors数组的大小。
serNum:表示的服务器的数量,在本函数中用不到,本函数只是考虑一个服务器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值