zoukankan      html  css  js  c++  java
  • IOI flower

    <问题分析>

    状态转移函数 s[i][j]=max{s[i-1][k]}+a[i][j]   i<=k<j

     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 
     5 //  s[i][j]=max{s[i-1][t]+a[i][j]}
     6 int main()
     7 {
     8     int i,j,k,f,v,tag,a[101][101],s[101][101],w[101][101],t[101];
     9     scanf("%d %d",&f,&v);
    10     for(i=1;i<=f;i++)
    11     {
    12        for(j=1;j<=v;j++)
    13        {
    14            scanf("%d",&a[i][j]);
    15        }
    16     }
    17     for(i=1;i<=v;i++)
    18     {
    19        s[1][i]=a[1][i];
    20     }
    21     for(i=2;i<=f;i++)
    22     {
    23        for(j=i;j<=v;j++)
    24        {
    25           tag=-510000;
    26           for(k=i;k<j;k++)
    27           {
    28              if(tag<s[i-1][k])
    29              {
    30                 tag=s[i-1][k];
    31                 w[i][j]=k;
    32              }              
    33           }
    34           s[i][j]=tag+a[i][j];
    35        }
    36     }
    37     j=f;k=s[f][f];t[f]=f;
    38     for(i=f+1;i<=v;i++)
    39     {
    40        if(k<s[f][i])
    41        {
    42           k=s[f][i];t[f]=i;
    43        }
    44     }
    45     while(j>1)
    46     {
    47        j--;
    48        t[j]=w[j+1][t[j+1]];
    49     }
    50     printf("%d
    ",k);
    51     for(i=1;i<f;i++)
    52       printf("%d ",t[i]);
    53     printf("%d
    ",t[f]);
    54     while(true);
    55     return 0;
    56 }
  • 相关阅读:
    Java 窗口 绘制图形 #1
    支配树
    Tarjan算法
    Baby-step giant-step算法
    初等群论
    第七次java作业
    学习所用的开发环境
    第六次java作业
    第五次java作业
    第四次java作业
  • 原文地址:https://www.cnblogs.com/simplesslife/p/flower.html
Copyright © 2011-2022 走看看