工作分配问题 Java 回溯
来源:互联网 发布:淘宝服装拍摄平铺 编辑:程序博客网 时间:2024/05/17 03:43
问题描述:
设有n件工作分配给n个人。为第i个人分配工作j所需的费用为c[i][j] 。试设计一个算法,计算最佳工作分配方案,为每一个人都分配1 件不同的工作,并使总费用达到最小。
3
10 2 3
2 3 4
3 4 5
import java.util.Scanner;public class GongZuoFenPei {static int n;static int[][] p;static int[][] t; //标记数组static int minP;static int tempMinP=0;public static void main(String[] args) {Scanner input= new Scanner(System.in);n=input.nextInt();p=new int[n][n];t=new int[n][n];for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {p[i][j]=input.nextInt();minP+=p[i][j];}}getMinP(0);System.out.println(minP);input.close();}public static void getMinP(int k){if(k==n){if(tempMinP<minP){minP=tempMinP;}return;}for (int i = 0; i < n; i++) {if(isok(k, i)){tempMinP+=p[k][i];t[k][i]=1;getMinP(k+1);tempMinP-=p[k][i];t[k][i]=0;}}}public static boolean isok(int k,int i){for (int j = 0; j < n; j++) {if(t[k][j]==1){return false;}}for (int j = 0; j < n; j++) {if(t[j][i]==1){return false;}}return true;}}
另一种思路可以求n的全排列,遍历,求出最优解
0 0
- 工作分配问题 Java 回溯
- 【回溯法】工作分配问题
- 回溯法之工作分配问题
- 回溯法之工作分配问题
- 回溯法3--工作分配问题
- 回溯法-工作分配
- c++回溯法实现工作分配问题
- 任务分配问题(回溯算法)
- 工作分配问题
- 工作分配问题
- 17085 工作分配问题
- 工作分配问题
- 工作分配问题
- 【9503】工作分配问题
- 工作分配问题
- 工作分配问题
- 工作分配问题
- 工作分配问题
- continue与break的区别
- csrf 同源策略 xmlhttprequest跨域 xml
- java去除List中重复的元素
- 招聘 --- 高级应用运维工程师(专家级)
- 对0-1背包问题的理解
- 工作分配问题 Java 回溯
- hdu-1018亚洲赛区现场赛的水题吧?
- 免费和开源世界里面有很多好的邮件服务器
- JavaFx2学习笔记day01
- Jquery使用笔记
- putty提供的两个文件传输工具PSCP、PSFTP详细介绍
- nyoj451光棍节的快乐 (组合数 + 全错排)
- 回调函数
- 学习OpenCV——KNN算法