算法之装配线问题

  1. packagecom.eshore.sweetop.dynamicprogramming;
  2. //装配线问题
  3. publicclassColonel{
  4. //1号装配线效率
  5. int[]a1={7,9,3,4,8,4};
  6. //2号装配线效率
  7. int[]a2={8,5,6,4,5,7};
  8. //1号到2号运输线
  9. int[]t1={2,3,1,3,4};
  10. //2号到1号运输线
  11. int[]t2={2,1,2,2,1};
  12. //底盘到站1时间
  13. inte1=2;
  14. //底盘到站2时间
  15. inte2=4;
  16. //完成出站1时间
  17. intx1=3;
  18. //完成出站2时间
  19. intx2=2;
  20. int[]f1=newint[a1.length];
  21. int[]f2=newint[a2.length];
  22. int[]l1=newint[a1.length];
  23. int[]l2=newint[a2.length];
  24. intf;
  25. intl;
  26. publicvoidfastestWay(){
  27. f1[0]=e1+a1[0];
  28. f2[0]=e2+a2[0];
  29. l1[0]=1;
  30. l2[0]=2;
  31. for(inti=1;i<a1.length;i++){
  32. if(f1[i-1]<=f2[i-1]+t2[i-1]){
  33. f1[i]=f1[i-1]+a1[i];
  34. l1[i]=1;
  35. }else{
  36. f1[i]=f2[i-1]+t2[i-1]+a1[i];
  37. l1[i]=2;
  38. }
  39. if(f2[i-1]<=f1[i-1]+t1[i-1]){
  40. f2[i]=f2[i-1]+a2[i];
  41. l2[i]=2;
  42. }else{
  43. f2[i]=f1[i-1]+t1[i-1]+a2[i];
  44. l2[i]=1;
  45. }
  46. }
  47. if(f1[a1.length-1]+x1<=f2[a2.length-1]+x2){
  48. f=f1[a1.length-1]+x1;
  49. l=1;
  50. }else{
  51. f=f2[a2.length-1]+x2;
  52. l=2;
  53. }
  54. }
  55. publicvoiddisplay(){
  56. inti=l;
  57. System.out.println("最短装配线");
  58. System.out.println("line"+i+",station"+l1.length);
  59. for(intj=l1.length-1;j>0;j--){
  60. int[]min=null;
  61. if(i==1){
  62. min=l1;
  63. }else{
  64. min=l2;
  65. }
  66. i=min[j];
  67. System.out.println("line"+i+",station"+j);
  68. }
  69. }
  70. publicstaticvoidmain(String[]args){
  71. Colonelc=newColonel();
  72. c.fastestWay();
  73. System.out.println("最短时间:"+c.f);
  74. c.display();
  75. }
  76. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值