用深度优先搜索算法求解该问题,需要注意以下几点:

1.每个人只能被分配一个工作,每个工作只能被分配给一个人,所以要用一个数组记录哪些工作已经被分配了,哪些人已经被分配了工作;

2.在搜索过程中,需要记录当前的总费用,以便判断是否达到最优解或者是否需要剪枝;

3.在搜索过程中,需要记录已经分配的工作数量,如果已经分配的工作数量达到n,说明所有工作都已经分配完毕,此时可以计算总费用并进行更新。同时,如果当前总费用已经大于已经得到的最小总费用,也可以进行剪枝。

参考代码如下:

【问题描述】设有n件工作分配给n个人将工作i分配给第j个人费用为Cij为每个人分配一件不同的工作对于给定的工作费用计算最佳工作分配方案使得中费用达到最小。【输入格式】第一行有1个正整数1=n=20接下来的n行每行n个数第i行表示第i个人从事各项工作的费用【输出格式】共一行即最小总费用【输入样例】34 2 52 3 63 4 5【输出样例】9用深度优先搜索算法

原文地址: https://www.cveoy.top/t/topic/fau8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录