Skip to content

Commit 5c98288

Browse files
committed
commit
1 parent b95f0ce commit 5c98288

33 files changed

+343
-3
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package dynamicProgramming;
2+
3+
public class TestDynamicProgramming {
4+
public static void main(String[] args) {
5+
int[] p={0,1,5,8,9,10,17,17,20,24,30};
6+
int n=0; //输入的n,实际为n-1 ; 因为java角标是从0开始的
7+
DynamicProgramming dp=new DynamicProgramming();
8+
// int maxProce=dp.memoizedCutRod(p, n+1);
9+
int maxPrice=dp.bottomUpCutRod(p, n+2);
10+
System.out.println(maxPrice);
11+
}
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package dynamicProgramming;
2+
3+
public class TestDynamicProgramming {
4+
public static void main(String[] args) {
5+
int[] p={0,1,5,8,9,10,17,17,20,24,30};
6+
int n=9; //输入的n,实际为n-1 ; 因为java角标是从0开始的
7+
DynamicProgramming dp=new DynamicProgramming();
8+
// int maxProce=dp.memoizedCutRod(p, n+1);
9+
int maxPrice=dp.bottomUpCutRod(p, n+2);
10+
System.out.println(maxPrice);
11+
}
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package dynamicProgramming;
2+
3+
public class TestDynamicProgramming {
4+
public static void main(String[] args) {
5+
int[] p={0,1,5,8,9,10,17,17,20,24,30};
6+
int n=7; //输入的n,实际为n-1 ; 因为java角标是从0开始的
7+
DynamicProgramming dp=new DynamicProgramming();
8+
// int maxProce=dp.memoizedCutRod(p, n+1);
9+
int maxPrice=dp.bottomUpCutRod(p, n+2);
10+
System.out.println(maxPrice);
11+
}
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package dynamicProgramming;
2+
3+
public class TestDynamicProgramming {
4+
public static void main(String[] args) {
5+
int[] p={0,1,5,8,9,10,17,17,20,24,30};
6+
int n=11; //输入的n,实际为n-1 ; 因为java角标是从0开始的
7+
DynamicProgramming dp=new DynamicProgramming();
8+
// int maxProce=dp.memoizedCutRod(p, n);
9+
int maxPrice=dp.bottomUpCutRod(p, n);
10+
System.out.println(maxPrice);
11+
}
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package dynamicProgramming;
2+
3+
public class TestDynamicProgramming {
4+
public static void main(String[] args) {
5+
int[] p={0,1,5,8,9,10,17,17,20,24,30};
6+
int n=7; //输入的n,实际为n-1 ; 因为java角标是从0开始的
7+
DynamicProgramming dp=new DynamicProgramming();
8+
// int maxProce=dp.memoizedCutRod(p, n);
9+
int maxPrice=dp.bottomUpCutRod(p, n);
10+
System.out.println(maxPrice);
11+
}
12+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package dynamicProgramming;
2+
3+
public class DynamicProgramming {
4+
5+
public int memoizedCutRod(int[] p,int n){
6+
int[] r=new int[n];
7+
for (int i = 0; i < r.length; i++) {
8+
r[i]=Integer.MIN_VALUE;
9+
}
10+
return memoizedCutRodAux(p,n,r);
11+
}
12+
private int memoizedCutRodAux(int[] p, int n, int[] r) {
13+
// TODO Auto-generated method stub
14+
int q;
15+
if(r[n-1]>=0){
16+
return r[n-1];
17+
}
18+
if(n-1==0){
19+
q=0;
20+
}else{
21+
q=Integer.MIN_VALUE;
22+
for (int i = 1; i <n; i++) {
23+
if(p[i]+memoizedCutRodAux(p, n-i, r)>q){
24+
q=p[i]+memoizedCutRodAux(p, n-i, r);
25+
}else{
26+
q=q;
27+
}
28+
}
29+
}
30+
r[n-1]=q;
31+
return q;
32+
}
33+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package dynamicProgramming;
2+
3+
public class DynamicProgramming {
4+
5+
6+
public int bottomUpCutRod(int[] p,int n){
7+
int[] r=new int[n];
8+
r[0]=0;
9+
for (int j = 0; j < r.length; j++) {
10+
int q=Integer.MIN_VALUE;
11+
for (int i = 0; i < j; i++) {
12+
if(q>p[i]+r[j-i]){
13+
q=q;
14+
}else{
15+
q=p[i]+r[j-i];
16+
}
17+
}
18+
r[j]=q;
19+
}
20+
return r[n-1];
21+
}
22+
23+
24+
public int memoizedCutRod(int[] p,int n){
25+
int[] r=new int[n];
26+
for (int i = 0; i < r.length; i++) {
27+
r[i]=Integer.MIN_VALUE;
28+
}
29+
return memoizedCutRodAux(p,n,r);
30+
}
31+
private int memoizedCutRodAux(int[] p, int n, int[] r) {
32+
// TODO Auto-generated method stub
33+
int q;
34+
if(r[n-1]>=0){
35+
return r[n-1];
36+
}
37+
if(n-1==0){
38+
q=0;
39+
}else{
40+
q=Integer.MIN_VALUE;
41+
for (int i = 1; i <n; i++) {
42+
if(p[i]+memoizedCutRodAux(p, n-i, r)>q){
43+
q=p[i]+memoizedCutRodAux(p, n-i, r);
44+
}else{
45+
q=q;
46+
}
47+
}
48+
}
49+
r[n-1]=q;
50+
return q;
51+
}
52+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package dynamicProgramming;
2+
3+
public class DynamicProgramming {
4+
5+
6+
public int bottomUpCutRod(int[] p,int n){
7+
int[] r=new int[n];
8+
r[0]=0;
9+
for (int j = 0; j < r.length; j++) {
10+
int q=Integer.MIN_VALUE;
11+
for (int i = 0; i < j; i++) {
12+
if(q>p[i]+r[j-i]){
13+
q=q;
14+
}else{
15+
q=p[i]+r[j-i];
16+
}
17+
}
18+
r[j-1]=q;
19+
}
20+
return r[n-1];
21+
}
22+
23+
24+
public int memoizedCutRod(int[] p,int n){
25+
int[] r=new int[n];
26+
for (int i = 0; i < r.length; i++) {
27+
r[i]=Integer.MIN_VALUE;
28+
}
29+
return memoizedCutRodAux(p,n,r);
30+
}
31+
private int memoizedCutRodAux(int[] p, int n, int[] r) {
32+
// TODO Auto-generated method stub
33+
int q;
34+
if(r[n-1]>=0){
35+
return r[n-1];
36+
}
37+
if(n-1==0){
38+
q=0;
39+
}else{
40+
q=Integer.MIN_VALUE;
41+
for (int i = 1; i <n; i++) {
42+
if(p[i]+memoizedCutRodAux(p, n-i, r)>q){
43+
q=p[i]+memoizedCutRodAux(p, n-i, r);
44+
}else{
45+
q=q;
46+
}
47+
}
48+
}
49+
r[n-1]=q;
50+
return q;
51+
}
52+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package dynamicProgramming;
2+
3+
public class TestDynamicProgramming {
4+
public static void main(String[] args) {
5+
int[] p={0,1,5,8,9,10,17,17,20,24,30};
6+
int n=7; //输入的n,实际为n-1 ; 因为java角标是从0开始的
7+
DynamicProgramming dp=new DynamicProgramming();
8+
int maxProce=dp.memoizedCutRod(p, n);
9+
System.out.println(maxProce);
10+
}
11+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package dynamicProgramming;
2+
3+
public class DynamicProgramming {
4+
5+
6+
public int bottomUpCutRod(int[] p,int n){
7+
int[] r=new int[n];
8+
r[0]=0;
9+
for (int j = 0; j < r.length; j++) {
10+
int q=Integer.MIN_VALUE;
11+
for (int i = 0; i < j; i++) {
12+
if(q>p[i]+r[j-i]){
13+
q=q;
14+
}else{
15+
q=p[i]+r[j-i];
16+
}
17+
}
18+
r[j]=q;
19+
}
20+
return r[n];
21+
}
22+
23+
24+
public int memoizedCutRod(int[] p,int n){
25+
int[] r=new int[n];
26+
for (int i = 0; i < r.length; i++) {
27+
r[i]=Integer.MIN_VALUE;
28+
}
29+
return memoizedCutRodAux(p,n,r);
30+
}
31+
private int memoizedCutRodAux(int[] p, int n, int[] r) {
32+
// TODO Auto-generated method stub
33+
int q;
34+
if(r[n-1]>=0){
35+
return r[n-1];
36+
}
37+
if(n-1==0){
38+
q=0;
39+
}else{
40+
q=Integer.MIN_VALUE;
41+
for (int i = 1; i <n; i++) {
42+
if(p[i]+memoizedCutRodAux(p, n-i, r)>q){
43+
q=p[i]+memoizedCutRodAux(p, n-i, r);
44+
}else{
45+
q=q;
46+
}
47+
}
48+
}
49+
r[n-1]=q;
50+
return q;
51+
}
52+
}

0 commit comments

Comments
 (0)