最大の方程式アルゴリズムブルーブリッジカップトレーニング

問題説明
  タイトルNデジタル与え、非常に簡単であり、最終結果はできるだけ大きくされ、K個の乗算とNK-1プラス記号の添加の途中には、それらの相対位置を変更(プラス何括弧)ありません。乗算とプラスは、N-1の合計であるため、その正確ごとに隣接する二つの数字の間の符号を持っています。例えば:
  N = 5、K = 2,5番号それぞれ1,2,3,4,5、添加することができる:
  1 2(3 + 4 + 5)24 =
  1
(2 + 3)(4 + 5 )45 =
  (1
2 + 3)*(4 + 5)= 45
  ......
*
  
入力形式の
  入力ファイルが2つの行を合計、最初の二つは、整数は、スペースで区切られた作用、及びN(2 <= Kを表しN <= 15、0 <= K <= N-1)。スペースで区切られたN個の2行目(0〜9の間の各数値)。

出力形式の
  出力ファイルのみ1つの行が必要な最大の結果を示す整数含有する

  
サンプル入力を
5 2
1 2 5 4 3

サンプル出力
120

例説明
  (1 + 2 + 3)= 120 * 4 * 5


import java.util.Scanner;
public class Main {
    public static void main(String[] args) { 
        int a[]=new int[120];
        long sum[]=new long[120];    
        long f[][]=new long[120][120];
        int n,K;
        sum[0]=0; 
        Scanner sc=new  Scanner(System.in);
        n=sc.nextInt();
        K=sc.nextInt();
        for(int i=1;i<=n;i++){
            a[i]=sc.nextInt();
            sum[i]=sum[i-1]+a[i];
        }
        for(int i=1;i<=n;i++)
            f[i][0]=sum[i];
        for(int i=0;i<=n;i++){
             int t = Math.min(i - 1, K);
            for(int j=1;j<=t;j++){ 
                for(int k=2;k<=i;k++){
                    long s=sum[i]-sum[k-1];
                    f[i][j]=Math.max(f[k-1][j-1]*s, f[i][j]);
                }
            }
        }
        System.out.println(f[n][K]);

    }

}

テスト

公開された475元の記事 ウォンの賞賛682 ビュー520 000 +

おすすめ

転載: blog.csdn.net/Czhenya/article/details/104902058