• 部门优化


    问题:

    某公司内有 4 个项⽬组,项⽬组 A、B、C、D,项⽬组A现有10⼈,项⽬组B现有7⼈,项⽬组C现 有5⼈,
    项⽬组D现有4⼈。为了实现跨项⽬组协作,公司决定每⽉从⼈数最多的项⽬组中抽调 3 ⼈
    出来,到其他剩下 3 组中,每组 1 ⼈,这称之为⼀次调整优化(亦即经过第⼀次调整后,A组有7
    ⼈,B组有8⼈,C组有6⼈,D组有5⼈)。
    那么请问,经过⼗年的优化调整后,各项⽬组各有⼏⼈?
    编程求解该问题,并思考是否为最优解。

    分析:

    从题目可知,思路就是找出ABCD四个项目组中哪个项目组人最多,将人数减3,其他三个部门各自加1,每月优化

    一次,十年就是120次。

    代码:

    # -*- coding: utf-8 -*-
    '''
    某公司内有 4 个项⽬组,项⽬组 A、B、C、D,项⽬组A现有10⼈,项⽬组B现有7⼈,项⽬组C现 有5⼈,
    项⽬组D现有4⼈。为了实现跨项⽬组协作,公司决定每⽉从⼈数最多的项⽬组中抽调 3 ⼈
    出来,到其他剩下 3 组中,每组 1 ⼈,这称之为⼀次调整优化(亦即经过第⼀次调整后,A组有7
    ⼈,B组有8⼈,C组有6⼈,D组有5⼈)。
    那么请问,经过⼗年的优化调整后,各项⽬组各有⼏⼈?
    编程求解该问题,并思考是否为最优解。
    '''
    class Solution:
        def result(self,year):
            project_dic = {
                'A':10,
                'B':7,
                'C':5,
                'D':4
            }
            for i in range(12*year):
                max_Value = self.get_MaxValueDic(project_dic)
                self.optimization(project_dic,max_Value)
                print(f'第{i+1}月优化后:{project_dic}')
    
        def optimization(self,ori_dic,max_Value):
            for k in ori_dic.keys():
                if k==max_Value:
                    ori_dic[k]=ori_dic[k]-3
                else:
                    ori_dic[k]=ori_dic[k]+1
    
        def get_MaxValueDic(self,target_dic):
            for k,v in target_dic.items():
                if v == max(target_dic.values()):
                    return k
    
    if __name__=="__main__":
        s = Solution()
        s.result(10)

    结果:

    第1月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第2月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第3月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第4月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第5月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第6月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第7月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第8月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第9月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第10月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第11月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第12月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第13月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第14月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第15月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第16月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第17月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第18月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第19月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第20月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第21月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第22月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第23月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第24月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第25月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第26月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第27月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第28月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第29月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第30月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第31月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第32月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第33月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第34月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第35月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第36月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第37月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第38月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第39月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第40月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第41月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第42月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第43月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第44月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第45月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第46月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第47月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第48月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第49月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第50月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第51月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第52月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第53月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第54月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第55月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第56月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第57月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第58月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第59月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第60月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第61月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第62月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第63月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第64月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第65月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第66月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第67月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第68月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第69月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第70月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第71月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第72月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第73月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第74月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第75月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第76月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第77月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第78月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第79月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第80月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第81月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第82月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第83月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第84月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第85月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第86月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第87月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第88月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第89月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第90月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第91月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第92月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第93月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第94月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第95月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第96月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第97月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第98月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第99月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第100月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第101月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第102月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第103月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第104月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第105月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第106月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第107月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第108月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第109月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第110月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第111月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第112月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第113月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第114月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第115月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第116月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}
    第117月优化后:{'A': 7, 'B': 8, 'C': 6, 'D': 5}
    第118月优化后:{'A': 8, 'B': 5, 'C': 7, 'D': 6}
    第119月优化后:{'A': 5, 'B': 6, 'C': 8, 'D': 7}
    第120月优化后:{'A': 6, 'B': 7, 'C': 5, 'D': 8}

    从结果可知并不是最优解,因为从第二次优化,项目组人数都是 5 6 7 8这几个数。

    不论你在什么时候开始,重要的是开始之后就不要停止。 不论你在什么时候结束,重要的是结束之后就不要悔恨。
  • 相关阅读:
    Git远程库
    Git的使用
    如何利用IO流复制文件
    Lambda表达式
    Lambda表达式的标准格式
    线程池的使用步骤
    解决线程安全的三个方法
    多线程
    位运算
    如何用javadoc生成java帮助文档
  • 原文地址:https://www.cnblogs.com/yunhgu/p/14491052.html
Copyright © 2020-2023  润新知