Cod sursa(job #1836025)

Utilizator diana97Diana Ghinea diana97 Data 27 decembrie 2016 18:28:53
Problema Parantezare optima de matrici Scor 100
Compilator java Status done
Runda Arhiva educationala Marime 1.2 kb
import java.util.*;
import java.io.*;

class Main {
	public static void main(String []args) {
    File inputFile = new File("podm.in");
    File outputFile = new File("podm.out");

    try {
      FileInputStream inputStream = new FileInputStream(inputFile);
      Scanner scanner = new Scanner(inputStream);
      int n = scanner.nextInt();
      long[] d = new long[n + 1];
      long[][] dp = new long[n + 1][n + 1];
      long INF = 1L << 60;

      for (int i = 0; i <= n; i++)
        d[i] = scanner.nextInt();
      inputStream.close();

      long solcrt;

      for (int l = 1; l < n; l++) {
        for (int i = 0; i < n - l; i++) {
          int j = i + l;
          dp[i][j] = INF;
          for (int k = i; k < j; k++) {
            solcrt = dp[i][k] + dp[k + 1][j] + d[i] * d[k + 1] * d[j + 1];
            if (solcrt < dp[i][j]) dp[i][j] = solcrt;
          }
        }
      }
      try {
    		FileOutputStream outputStream = new FileOutputStream(outputFile);
        PrintWriter writer = new PrintWriter(outputStream);
        writer.print(dp[0][n - 1]);
        writer.print('\n');
        writer.close();
        outputStream.close();
    	} catch(IOException e) {

    	}
    } catch(IOException e) {

    }
	}
}