zoukankan      html  css  js  c++  java
  • (Java实现) 工作分配问题

    工作分配问题
    时间限制: 1 Sec 内存限制: 128 MB
    [提交][状态][讨论版]
    题目描述
    设有n件工作分配给n个人。为第i个人分配工作j所需的费用为c[i][j] 。试设计一个算法,计算最佳工作分配方案,为每一个人都分配1 件不同的工作,并使总费用达到最小。
    输入
    第一行一个正整数n(1<=n<=20),接下来的n 行,每行n 个数,表示工作费用 。
    输出
    输出有m行,每行输出最小总费用。
    样例输入
    5
    50 43 1 58 60
    87 22 5 62 71
    62 98 97 27 38
    56 57 96 73 71
    92 36 43 27 95
    样例输出
    144

    import java.util.Scanner;
    
    
    public class gongzuofenpeiwenti {
    	public static int sum = 0,n;
    	public static int [] [] num ;
    	public static boolean []  bool;
    	public static int min = Integer.MAX_VALUE;
    	public static void main(String[] args) {
    		Scanner sc =new Scanner(System.in);
    		 n = sc.nextInt();
    		num = new int [n+1][n+1];
    		bool = new boolean [n+1];
    		for (int i = 1; i <=n; i++) {
    			for (int j = 1; j <=n; j++) {
    				num[i][j]=sc.nextInt();
    			}
    		}
    		f(1);
    		System.out.println(min);
    	}
    	public static void f(int a){
    		if(a==n+1){
    			if(sum<min){
    				min=sum;
    			}
    			return;
    		}
    		for (int i = 1; i <=n; i++) {
    			if(!bool[i]){
    				sum+=num[a][i];
    				bool[i]=true;
    				f(a+1);
    				sum-=num[a][i];
    				bool[i]=false;
    			}
    		}
    	}
    	
    
    }
    
    
  • 相关阅读:
    set的使用
    dict的使用
    tuple的使用
    Python数据类型字符串
    spring与redis集成之aop整合方案
    MySQL 对于大表(千万级),要怎么优化呢?
    MYSQL千万级数据量的优化方法积累
    Java:按值传递还是按引用传递详细解说
    常用正则表达式
    Java中equals和==的区别
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12948832.html
Copyright © 2011-2022 走看看