zoukankan      html  css  js  c++  java
  • 石子合并

    #include<iostream>
    #include<cstring>
    using namespace std;
    int ma[300][300];
    int h[300][300];
    int a[300];
    int main()
    {
     int n,max,sum,i,k,ii,j,f;
     while(cin>>n)
     {
      for(i=0;i<n;i++)
       cin>>a[i];
      for(i=n;i<=2*n-1;i++)
       a[i]=a[i-n];
      memset(ma,0,sizeof(ma));
      memset(h,0,sizeof(h)); 
      for(i=1;i<n;i++)//合并i个
      {
       for(j=0;j<n;j++)//从第i个合并
       {
        max=0;
        f=9999999;
        for(k=j;k<j+i;k++)
        {
         if(max<ma[j][k]+ma[k+1][j+i])
          max=ma[j][k]+ma[k+1][j+i];
         if(f>h[j][k]+h[k+1][j+i])
         { 
          f=h[j][k]+h[k+1][j+i];
         }
        }
        sum=0;
        for(ii=j;ii<=j+i;ii++)
         sum+=a[ii];
        ma[j][j+i]=max+sum;
        if(f==999999) f=0;
        h[j][j+i]=f+sum;
        if(j+i+n<=n*2-1)//对称分布
        {
         ma[j+n][j+i+n]=ma[j][j+i];
         h[j+n][j+i+n]=h[j][j+i];
        }
       }
      }
     
      max=0;
      for(i=0;i<n;i++)
       if(max<ma[i][i+n-1])
        max=ma[i][i+n-1];
       f=9999999;
       int x;
       for(i=0;i<n;i++)
        if(f>h[i][i+n-1])
        {
         x=i;
         f=h[i][i+n-1];
        }
       cout<<f<<endl;
       cout<<max<<endl;
     }
     return 0;
    }

  • 相关阅读:
    记一次MD5妙用
    go执行外部应用
    Go语言中的HTTP
    Go语言中的UDP应用
    Go学习
    Element-ui学习使用
    Vue学习
    BootCDNApi使用记录
    jquery.easypiechart.js简介
    jquery.gritter.js简介
  • 原文地址:https://www.cnblogs.com/zhangdashuai/p/3473743.html
Copyright © 2011-2022 走看看