回溯法解决工作分配问题
问题描述:
设有n件工作分配给n个人。为第i个人分配工作j所需的费用为c[i][j] 。试设计一个算法,计算最佳工作分配方案,为每一个人都分配1 件不同的工作,并使总费用达到最小。
代码块如下:

package suanfa;
import java.util.Scanner;

public class 工作分配问题回溯法 {

static int n,cost=0;                 //耗资cost为0  n为员工数量
static int c[][]=new int[100][100];  //各员工在各工作上的工资static void work(int i,int count , int x[]){if(i>n && count<cost){//各个工作安排完毕且为更优解cost = count;//更新最优解showResult(x);//展示方案return;}if(count<cost)for(int j=1;j<=n;j++)if(x[j] == 0){  //j表示员工,判断其是否被安排x[j] = i;     //i表示工作count+=c[j][i];work(i+1,count,x);  x[j] = 0; count-=c[j][i];}}static  void showResult(int x[]) {int pay=0;for(int i=1;i<x.length;i++) {System.out.println("       员     工    ("+i+")   工    作 :"+x[i]+"         工 资 为 :"+c[i][x[i]]);pay+=c[i][x[i]];}System.out.println("       当    前    耗    资    为    :"+pay+"\n  ------------------------------------");
}

public static void main(String args[]) {

    Scanner sc=new Scanner(System.in);System.out.print("       请  输  入  员  工  数  量   :");//输入问题规模n=sc.nextInt();int x[]=new int[n+1];//用于记录工作安排System.out.println("       输入各员工在各工作的工资");System.out.print("       工     作     编     号       :");for(int i=1;i<=n;i++)  System.out.print(i+"  ");System.out.println();for(int i=1;i<=n;i++){System.out.print("       员     工     编     号 ("+i+"):");for(int j=1;j<=n;j++){c[i][j]=sc.nextInt();//输入各个数据x[j] = 0;  //初始化工作安排}cost+=c[i][i];  //初始耗资:按员工顺序安排工作}//展示初始安排信息System.out.println("       初   始   工   作   安   排-----------------------");for(int i=1;i<x.length;i++)System.out.println("       员     工    ("+i+")   工    作 :"+i+"         工 资 为 :"+c[i][i]);System.out.println("      初  始  工  作  安  排  耗  资  :"+cost+"");//展示更优化安排方案System.out.println("       更   优   工   作   安   排-----------------------");work(1,0,x);//i表示员工,从第1个员工安排工作System.out.println("       预   计   最   少   耗   资   :"+cost);

}
}

本人小白一名,还请各位大佬多多指教!!!

回溯法解决工作分配问题相关推荐

  1. 回溯法解决工作分配问题及分析

    1.实践题目 工作分配问题 2.问题描述 设有n件工作分配给n个人.将工作i分配给第j个人所需的费用为cij . 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小 ...

  2. 回溯法解决tsp问题 matlab,回溯法求解tsp问题

    回溯法以这种工作方式递归地在解空间中搜索, 直至找到所 要求的解或解 空间中已无活结点时为止. 回溯法求解 TSP 问题,首先把所有的顶点的访问标志初始化为 0,...... 回溯法求解 TSP 问题 ...

  3. 回溯算法背包问题迭代c语言,回溯法解决0_1背包问题(迭代和递归)

    问题:0/1背包问题 例子:weight数组代表物品重量,value数组代表物品价值,M代表背包容量.背包是按单位价值递减的顺序排列的,即value[i]/weight[i]>value[i-1 ...

  4. 利用回溯法解决1-9之间添加+或-或使得运算结果为100的问题

    问题描述 编写一个在1,2,-,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性.例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 1 ...

  5. 回溯法解决0-1背包问题

    回溯法解决0-1背包问题 参考文章: (1)回溯法解决0-1背包问题 (2)https://www.cnblogs.com/womendouyiyang/p/10957527.html (3)http ...

  6. 编程解决素数环问题Java_回溯法解决素数环问题java实现

    素数环问题: 输入正整数n,把整数1,2,3--,n组成一个环,使得相邻两个整数之和均为素数,输出所有方案,注意同一个环应恰好输出一次.n<==16 样例输入: 6 样例输出: 1 4 3 2  ...

  7. 回溯法解决部落冲突问题

    回溯法解决部落冲突问题 实验内容 问题描述 思路分析 方法步骤 实验代码 实验内容 原始部落byteland中的居民为了争抢有限的资源,经常发生冲突.几乎每个居民都有它的仇敌.部落酋长为了组织一支保卫 ...

  8. 回溯法解决n皇后问题

    回溯法解决n皇后问题 题目要求: 在n×n格的棋盘上放置彼此不受攻击的n个皇后.按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子.n后问题等价于在n×n格的棋盘上放置n个皇后, ...

  9. 回溯法解决力扣79题单词搜索

    回溯法解决力扣79题单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word .如果 word 存在于网格中,返回 true :否则,返回 false . 单词必须按照字母 ...

最新文章

  1. 数据分析之全国热门景点分析
  2. ManualResetEvent详解
  3. 【python爬虫】报错module requests has no attribute get
  4. [BZOJ]1055: [HAOI2008]玩具取名
  5. cyyz: Day 4 网络流整理
  6. Codeforces Round #226 (Div. 2)
  7. CodeForces 621C 数学概率期望计算
  8. java怎么定义scanner_Java Scanner类的常用方法及用法(很详细)
  9. PAT-1068 万绿丛中一点红
  10. Shifting Letters
  11. 知己知彼才能成功拿下职场offer!
  12. C++泛型编程——模板学习
  13. 最短路径 floyd最小环 洛谷2738 篱笆回路 网上题解
  14. 基于经典蓝牙的安卓蓝牙APP开发(基于蓝牙2.0开发,例:HC-05)
  15. ​IBM、Google、Oracle三巨头的公有云之殇(下)
  16. UE4大场景解决方案 ——Pak的打包与加载
  17. php bearer token,php-使用CURL设置Bearer令牌的正确方法
  18. 基于Nacos和Sentinel实现灰度路由和流量防护一体化
  19. jQuery 判断是否包含在数组中 jQuery.inArray()
  20. 下载和运行GitHub上的代码教程总结

热门文章

  1. vue跳转页面不刷新的问题
  2. WIN32 预定义宏WIN32,_WIN32,_WIN64介绍使用
  3. Oracle数据库主键自增
  4. 在Word中画横线的四种方法
  5. 井通科技创始人周沙:摒弃以币价引领的盈利模式破局区块链之殇
  6. tar.gz解压失败Skipping to next header gzip
  7. 日报-康益明爱崔紫娟
  8. linux终端的重启命令有哪些,如何使用命令行重启Linux
  9. 表单展示界示例_联系表单页面设计的12个最佳实践(包括示例)
  10. CSS font-family中文字体对应的英文名称一览表