1 #include <stdio.h>
2 #define LEN 10
3 #define NEGINF -999999
4 struct r_d {
5 int r; //profit
6 int s; //distance
7 };
8
9 int price[LEN+1] = {0, 1, 5, 8, 9, 10, 17, 17, 20, 24, 30};
10
11 int cut_rod(int price[], int n)
12 {
13 /*
14 DP-1-cut-rod.c:9:8: error: variable-sized object may not be initialized
15 int r[n+1] = {0, price[1]};
16 ^~~
17 int r[n+1] = {0, price[1]};
18 */
19 int r[LEN+1] = {0, price[1]};
20 int i, j, max;
21
22 for (i = 2; i <= n; i++) {
23 max = NEGINF;
24 for (j = i; j >= 1; j--)
25 max = (max > r[i-j] + price[j]) ? max : (r[i-j]+price[j]);
26 r[i] = max;
27 }
28 return r[n];
29 }
30
31 int extend_cut_rod(int price[], int n)
32 {
33 int r[LEN+1], s[LEN+1];
34 int i, j, max;
35 struct r_d sol;
36
37 r[0] = 0, s[0] = 0;
38 for (i = 1; i <= n; i++) {
39 max = NEGINF;
40 for (j = i; j >= 1; j--) {
41 if (max < r[i-j] + price[j]) {
42 max = r[i-j] + price[j];
43 s[i] = j;
44 }
45 }
46 r[i] = max;
47 }
48 for (i = 0; i <= n ; i++)
49 printf("extend_cut_rod. s[%d] = %d\n", i, s[i]);
50 printf("===========================================\n");
51 for (i = 0; i <= n ; i++)
52 printf("extend_cut_rod. r[%d] = %d\n", i, r[i]);
53 return r[n];
54 }
55
56 int extend_cut_rod_2(int price[], int n)
57 {
58 int r[LEN+1], s[LEN+1];
59 int i, j, max;
60 struct r_d sol;
61
62 r[0] = 0, s[0] = 0;
63 for (i = 1; i <= n; i++) {
64 max = NEGINF;
65 for (j = 1; j <= i; j++) {
66 if (max < r[i-j] + price[j]) {
67 max = r[i-j] + price[j];
68 s[i] = j;
69 }
70 }
71 r[i] = max;
72 }
73 for (i = 0; i <= n ; i++)
74 printf("extend_cut_rod_2. s[%d] = %d\n", i, s[i]);
75 printf("===========================================\n");
76 for (i = 0; i <= n ; i++)
77 printf("extend_cut_rod_2. r[%d] = %d\n", i, r[i]);
78 return r[n];
79 }
80
81 int main(int argc, char *argv[])
82 {
83 int r, i;
84
85 for (i = 0; i <= LEN; i++) {
86 r = cut_rod(price, i);
87 printf("cut-rod r%d = %d\n", i, r);
88 }
89 printf("===========================================\n");
90 extend_cut_rod(price, 10);
91 printf("===========================================\n");
92 extend_cut_rod_2(price, 10);
93
94 return 0;
95 }

最新文章

  1. Spark基本工作流程及YARN cluster模式原理(读书笔记)
  2. 在非spring组件中注入spring bean
  3. ios framework 简单制作
  4. java求素数和求一个数的一个正整数的质因数
  5. 敏捷开发之Scrum扫盲篇(转)
  6. SHA1加密C#
  7. 第四课 Gallery的使用
  8. Codeforces 452E Three Strings(后缀自动机)
  9. javascript中的sort()方法
  10. LayoutInflater的获取方式
  11. vs2005的MFC程序在64位机上不能运行
  12. 括号匹配算法 C语言实现
  13. Javascript把数据从一个页面的层传递到另一个页面层里面
  14. windows 注入 之 CreateRemoteThread
  15. UE4实现描边效果
  16. Kubernetes入门-集群安装
  17. linux之配置Mongodb~
  18. 数据结构c++实现代码-链表
  19. C#_02.12_基础二_.NET类型存储和变量
  20. Ado.net和EF的区别

热门文章

  1. PostgreSQL 时间/日期函数和操作符
  2. LeetCode-2038 如果相邻两个颜色均相同则删除当前颜色
  3. jquery获得标签的值或元素的内容
  4. sqlserver 行转列 列转行
  5. Unity3D 不挂载脚本自动初始化
  6. gmlib密码算法库
  7. I2C接口(续一)
  8. javaSE学习四
  9. 布尔类型:boolean
  10. WinForms 嵌入 Web服务