最优钢条切割
2018-06-18 02:22:25来源:未知 阅读 ()
自底向上方法:
1 public class tmp { 2 3 private static int r[]; 4 5 private static int BOTTON_UP_CUT_ROD(int n, int p[]) { 6 r[0] = 0;// r[0]表示长度为0的时候的收益 7 int i; 8 for (i = 1; i <= n; i++) { 9 // i表示在限定长度范围内的变化 10 int max = -9999; 11 for (int j = 1; j <= i; j++) { 12 // j表示当前需要的长度, 13 // r[i-j]+p[j]则表示在当前选择长度的情况下的利润p[j]以及更小子问题的最优解(前边长度的最优利润)之和 14 max = (r[i - j] + p[j]) > max ? (r[i - j] + p[j]) : max; 15 } 16 r[i] = max; 17 } 18 return r[i - 1]; 19 } 20 21 /* 22 * p[]利润,r[]收益,length钢条长度 23 */ 24 public static void main(String[] args) { 25 while (true) { 26 Scanner sc = new Scanner(System.in); 27 int num = sc.nextInt(); 28 int p[] = new int[num + 1]; 29 p[0] = 0; 30 for (int i = 1; i <= num; i++) 31 p[i] = sc.nextInt(); 32 int length = sc.nextInt(); 33 r = new int[length + 1]; 34 System.out.println(BOTTON_UP_CUT_ROD(length, p)); 35 } 36 } 37 }
带备忘的自顶向下法:
1 public class tmp { 2 3 private static int r[]; 4 5 private static int MEMOIZED_CUT_ROD_AUX(int n, int p[]) { 6 if (r[n] >= 0) 7 return r[n]; 8 int max = -999; 9 for (int j = 1; j <= n; j++) { 10 int t = MEMOIZED_CUT_ROD_AUX(n - j, p) + p[j]; 11 12 max = max > t ? max : t; 13 } 14 return max; 15 } 16 17 public static int MEMOIZED_CUT_ROD(int n, int p[]) { 18 r[0] = 0; 19 for (int i = 1; i <= n; i++) 20 r[i] = -99999; 21 for (int i = 1; i <= n; i++) 22 r[i] = MEMOIZED_CUT_ROD_AUX(i, p); 23 return r[n]; 24 } 25 26 /* 27 * p[]利润,r[]收益,length钢条长度 28 */ 29 public static void main(String[] args) { 30 while (true) { 31 Scanner sc = new Scanner(System.in); 32 int num = sc.nextInt(); 33 int p[] = new int[num + 1]; 34 p[0] = 0; 35 for (int i = 1; i <= num; i++) 36 p[i] = sc.nextInt(); 37 int length = sc.nextInt(); 38 r = new int[length + 1]; 39 System.out.println(MEMOIZED_CUT_ROD(length, p)); 40 } 41 } 42 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Nginx 热部署和日志切割,你学会了吗? 2019-11-02
- tomcat日志切割和定期删除(转载) 2019-03-10
- java并发 - 自底向上的原理分析 2018-06-18
- 坑爹的日志无法按天切割问题! 2018-06-18
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash