zoukankan      html  css  js  c++  java
  • [codevs1090]加分二叉树

    不多说了,直接上代码

    var 
        n,m,i,j,k,x,y,l,r,t:longint;
        f,g:array[0..100,0..100]of longint;
        a:array[0..100]of longint;
    
    
        function max(a,b:longint):longint;
        begin
            if a>b then exit(a) else exit(b);
        end;
    
        procedure dfs(l,r:longint);
        var i,j:longint;
        b:boolean;
        
        begin
            if l<=r then begin
            write(g[l,r],' ');
            dfs(l,g[l,r]-1);
            dfs(g[l,r]+1,r);
            end else exit;
        end;
        
        begin
            readln(n);
            for i:=1 to n do
            read(a[i]);
            for i:=1 to n do
            begin
                f[i,i]:=a[i];
                f[i,i-1]:=1;
                g[i,i]:=i;
            end;
     
            for i:=n-1 downto 1 do
            for j:=i+1 to n do
            for k:=i to j do
            begin
                if f[i,j]<f[i,k-1]*f[k+1,j]+a[k] then begin
                f[i,j]:=f[i,k-1]*f[k+1,j]+a[k];
                g[i,j]:=k;
            end;
            end;
            writeln(f[1,n]);
            dfs(1,n);
        end.

      喜欢就收藏一下,vic私人qq:1064864324,加我一起讨论问题,一起进步^-^

  • 相关阅读:
    前端 HTML CSS
    前端部分1:HTML
    异常处理专区:
    IO模型介绍
    协程专区
    线程专区
    操作系统简介专区
    进程专区
    正则表达式专区:
    题解 P2158 【[SDOI2008]仪仗队】
  • 原文地址:https://www.cnblogs.com/victorslave/p/4817721.html
Copyright © 2011-2022 走看看