Advertisement
ulysses4ever

dyn-prog-static-fields-lists

Nov 21st, 2011
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 1.33 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.*;
  3.  
  4. public class Solution {
  5.    
  6.     static int[] p;
  7.    
  8.     static int[] deltas = new int[] {1, 2, 5};
  9.    
  10.     static List<Integer> /*int[]*/ r;
  11.    
  12.     static List<Integer> /*int[]*/ s;
  13.    
  14.     static void fillP(int n) {
  15.         p = new int[n];
  16.         p[0] = 1;
  17.         for (int i = 0; i < n-1; ++i) {
  18.             p[i+1] = p[i] + deltas[i % deltas.length];
  19.         }
  20.     }
  21.    
  22.     static int rodCutBottomUp(int n) {
  23.         r = new ArrayList<Integer>(n);
  24.         s = new ArrayList<Integer>(n);
  25.         r.add(0, 0);
  26.         s.add(0, 0);
  27.         for (int rod = 1; rod <= n; ++rod) {
  28.             int max = -1;
  29.             int imax = -1;
  30.             for (int len = 1; len <= rod; ++len) {
  31.                 int price = p[len-1] + r.get(rod - len);
  32.                 if (max < price) {
  33.                     max = price;
  34.                     imax = len;
  35.                 }
  36.             }
  37.             r.add(rod, max);
  38.             s.add(rod, imax);
  39.         }
  40.         return r.get(n);
  41.     }
  42.    
  43.     public static void main(String[] args) throws IOException {
  44.         int n = 100000;
  45.         fillP(n);
  46.         long start = System.currentTimeMillis();
  47.         System.out.println(rodCutBottomUp(n));
  48.         System.out.println("time bu: " + (System.currentTimeMillis() - start));
  49.     }
  50. }
  51.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement