动态规划1——之工厂生产线问题

原创 2011年01月19日 00:18:00

#include <iostream>

#define LINELENGTH 6

 

int line_1[] = {7, 9, 3, 4, 8, 4} ;

int line_2[] = {8, 5, 6, 4, 5, 7} ;

int time_1[] = {2, 2, 1, 2, 2, 1} ;

int time_2[] = {4, 2, 3, 1, 3, 4} ;

int best_line_1[6] = {0} ;

int best_line_2[6] = {0} ;

int short_time_line_1[6] = {0} ;

int short_time_line_2[6] = {0} ;

int time_line1_to_end = 3 ;

int time_line2_to_end = 2 ;

int lastStep ;

int lastTime;

 

void PrintLine(int stationNumber,int line )

{

if ( stationNumber > 0 ) {

if ( line == 2) {

PrintLine(stationNumber -1 , best_line_2[stationNumber - 1]) ;

std::cout<<"Station"<<stationNumber<<" Line 2"<<std::endl;

else {

PrintLine(stationNumber -1 , best_line_1[stationNumber - 1]) ;

std::cout<<"Station"<<stationNumber<<" Line 1"<<std::endl;

}

}

}

void FindBest()

{

best_line_1[0] = 1 ;

best_line_2[0] = 2;

short_time_line_1[0] = time_1[0] + line_1[0];

short_time_line_2[0] = time_2[0] + line_2[0];

for(int i = 1; i < 6 ; i++) {

if (short_time_line_1[i-1] > short_time_line_2[i-1] + time_1[i]) {

short_time_line_1[i] = short_time_line_2[i-1] + time_1[i] + line_1[i];

best_line_1[i] = 2;

}

else {

short_time_line_1[i] = short_time_line_1[i-1] +line_1[i] ;

best_line_1[i] = 1;

}

if (short_time_line_2[i-1] > short_time_line_1[i-1] + time_2[i]) {

short_time_line_2[i] = short_time_line_1[i-1] + time_2[i] + line_2[i] ;

best_line_2[i] = 1;

else {

short_time_line_2[i] = short_time_line_2[i-1] +line_2[i] ;

best_line_2[i] = 2;

}

 

} //end of for

if ( short_time_line_1[LINELENGTH -1] + time_line1_to_end > short_time_line_2[LINELENGTH -1] + time_line2_to_end ) {

lastTime = short_time_line_2[LINELENGTH -1] + time_line2_to_end ;

lastStep = 2 ;

else

{

lastTime = short_time_line_1[LINELENGTH -1] + time_line1_to_end;

lastStep = 1 ;

}

std::cout<<"Total time is "<<lastTime<<std::endl;

if ( lastStep > 1){

PrintLine(LINELENGTH, 2) ;

//std::cout<<"Station"<<LINELENGTH<<"Line 2"<<std::endl;

else {

PrintLine(LINELENGTH, 1) ;

//std::cout<<"Station"<<LINELENGTH<<"Line 1"<<std::endl;

}

 

 

}

 

 

int main()

{

FindBest();

getchar();

return 0;

}

0-1背包问题——动态规划

  • 2008年11月16日 19:40
  • 836B
  • 下载

编程练习-动态规划(生产线问题)

line_A_cost是生产线A的代价; line_B_cost是生产线B的代价 AB_cost是从生产线A转到生产线B的代价 BA_cost是从生产线B转到生产线A的代价 代码如下: ...

矩阵连乘问题——动态规划法

  • 2011年12月17日 16:20
  • 4KB
  • 下载

0-1背包问题(动态规划)

  • 2015年11月17日 14:49
  • 1KB
  • 下载

0019算法笔记——【动态规划】0-1背包问题

1、问题描述:      给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问:应如何选择装入背包的物品,使得装入背包中物品的总价值最大?      形式化描述:给定c ...

0-1背包 动态规划问题详解

  • 2013年11月13日 16:53
  • 914KB
  • 下载

动态规划法解0-1背包问题

  • 2014年06月02日 15:56
  • 1KB
  • 下载

动态规划法——求解0-1背包问题

动态规划法——求解0-1背包问题  问题描述 0-1背包问题与背包问题(贪心法——背包问题)最大的不同就是背包问题的子问题彼此之间没有联系,所以只要找出解决方法,然...

动态规划——0-1背包问题

0-1背包问题状态转移方程 f[i][j] = Max{f[i-1][j],f[i-1][j-w[i]]+v[i]} 其中 w[i] 为第i件物品的重量,v[i]为第i件物品的价值 f[i][j] ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:动态规划1——之工厂生产线问题
举报原因:
原因补充:

(最多只允许输入30个字)