2021华为软件精英挑战赛,思路框架,欢迎留言讨论

2021华为软件精英挑战赛,思路框架。

1.对数据初始化封装

  1. 服务器
  • 用集合来进行封装,集合由字符串和数组组成键值对

    {"服务器型号":[cpu内核,内存,硬件价格,能耗]}
    例如:
    {"NV603":[92 324 53800 500]"}
    
  1. 虚拟机
  • 同样用集合来进行封装,集合由字符串和数组组成键值对。

    {"虚拟机型号":[cpu内核,内存,部署方式(0或1)]}
    例如:
    {"NV603":[92 324 0]"}
    
  1. 每一天的请求序列
  • 可以用一个动态的二位数组来表示,数据类型用字符串。

    {
          {请求创建},{请求删除},...,{...}}
    {
          {add, c3.large.4, 5},{del, 0},...,{...}}
    

2.购买服务器

​ 题目已经说过,刚开时是没有服务器的,你不可能等请求来了才去购买服务器,所以要购买一定数量的服务器。就像家里的衣柜一样,不管有没有衣服,你都要先购买好衣柜,这个衣柜可能大也可能小。如果以后你买的衣服越来越多,那么你就得添加衣柜(服务器扩容)。

  • 购买服务器数量和每台服务器所部署的虚拟机数量可以用一个动态数组表示,题目说过服务器的ID编号从0开始,所以数组的索引即为服务器ID,索引对应的值即为该服务器上部署的虚拟机数目。

    刚开始:
    {0,0,0,...,0}//假设购买n台服务器,初始化都为0,即没有部署虚拟机。
    
  • 购买了服务器自然要做相关的记录。

    • 虚拟机部署在那台服务器、以及数量。可以用一个集合表示:

      {"虚拟机ID":[所部署服务器ID,Cpu核,内存,部署方式(自己选者合适的方式表示)]}
      例如:
      双节点:
      {"233":[3,32,200,1,2]}
      单节点A:
      {"233":[3,32,200,1]}
      单节点B:
      {"233":[3,32,200,1]}
      

3. 如何实现匹配

在购买完服务器之后,请求序列就可以进行读取了。我们就可以按照顺序完成虚拟机部署的任务了。

以面向过程分析:

需要实现的功能,即写一个函数完成功能:

  1. 匹配功能:能完成创建和删除虚拟机。
  2. 创建功能:虚拟机部署在那台服务器、以及数量的记录。
  3. 删除功能:删除虚拟机部署在那台服务器、以及数量的记录。
  4. 选择服务器功能:成功选取合适的服务器。
  5. 扩容功能:在服务器容量不足时购买服务器。
  6. 迁移功能:记录迁移数,合适的时候进行,提高资源利用率。

4. 输出

最后,可根据你用来记录购买服务器数量和每台服务器所部署的虚拟机数量的那个动态数组计算你的成本以及能耗

你可能感兴趣的:(java,数据结构,大数据)