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

    真是动态规划的  题型千千万  .  

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<math.h>
     4 #include<iostream>
     5 #include<algorithm>
     6 #include<queue>
     7 #include<vector>
     8 #include<set>
     9 #include<stack>
    10 #include<string>
    11 #include<sstream>
    12 #include<map>
    13 #include<cctype>
    14 #include<limits.h>
    15 using namespace std;
    16 #define N 205
    17 int sum[N],stone[N],dp[N][N];
    18 int main()
    19 {
    20     int n;
    21     while(scanf("%d",&n)!=EOF)
    22     {
    23         sum[0]=stone[0]=0;
    24         for(int i=1;i<=n;i++)
    25         {
    26             scanf("%d",&stone[i]);
    27             sum[i]=stone[i]+sum[i-1];           //   这种思想真是一种好东西   //   一维线性 搜索的时候 用这个也能节省超级多的时间  ..  
    28         }
    29         memset(dp,0,sizeof(dp));        //  先将 所有的  全归零  
    30         for(int d=1;d<n;d++)                      //             距离   ,   确定两两相隔的 距离  
    31             for(int i=1;i<=n-d;i++)     //  从  1 开始 一一确定 .  
    32         {
    33             int j=d+i;          //  开始 确定两个  距离的 坐标  
    34             dp[i][j]=INT_MAX;           //    先 默认 距离最大   . 
    35             int add=sum[j]-sum[i-1];           //  确定这两个数字  之间的 相差  的  知  
    36             for(int k=i;k<j;k++)     //    两个数字  之间错的  坐标 一个个  更新确定  .
    37                 dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+add);
    38         }
    39         printf("%d
    ",dp[1][n]);
    40     }
    41     return 0;
    42 }
  • 相关阅读:
    2822 爱在心中
    P1707 刷题比赛
    1269 匈牙利游戏
    1482 路线统计
    Codevs 1287 矩阵乘法&&Noi.cn 09:矩阵乘法(矩阵乘法练手题)
    P2022 有趣的数
    1087 麦森数
    P1111 修复公路
    python为在线漫画站点自制非官方API(未完待续)
    逻辑运算0==x和x==0具体解释
  • 原文地址:https://www.cnblogs.com/A-FM/p/5467005.html
Copyright © 2011-2022 走看看