编程解决工作指派问题(运筹学)

来源:互联网 发布:java c 区别 编辑:程序博客网 时间:2024/05/22 02:09

    今天要交运筹学动态规划部分的作业,我看了看书,发现有个问题能写出一个不错的程序来,于是心血来潮编程搞了下,效果还不错,嘿嘿,怀念高中时候的动态规划啊~~~

题目是这样的:

    有4个工人,要分别指派他们完成4项工作,每人做各项工作的时间如下表:

                   A                B               C               D

    甲           15              18             21              24

    乙           19              23             22              18

    丙           26              17             16              19

    丁           19              21             23              17

    问指派哪人去做什么工作,可使总的消耗时间最小?

 

我的代码如下:

 

其中,

f(a,state)表示前a个人,当前状态为state的时候的最小耗费时间。

state是一个2进制的数,大小是从0000-1111,当state从低到高第i位的数为0,就表示之前第i项工作没有安排人做,为1表示做了。

way是一个记录转移状态的数组,用于递归输出方案。

原创粉丝点击