动态规划的题,根据题意是从前往后推好还是从后往前遍历,要看自己的判断

哎呀呀,我真的是太菜太菜了,慢慢来吧,,,希望以后。。。

一般递推都是从后往前,

代码一:用了结构体,,

#include<iostream>
#include<algorithm>
#include<cctype>
#include<cstring>
#include<string>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<vector>
#include<map>using namespace std;const int M=210;struct Segement
{int color;int len;
};Segement segements[M];
int score[M][M][M];int Click_Box(int i,int j,int len)
{int result,r,k;if(score[i][j][len]!=-1)return score[i][j][len];result=(segements[j].len+len)*(segements[j].len+len);if(i==j)return result;result+=Click_Box(i,j-1,0);for(k=i; k<=j-1; ++k){if(segements[k].color!=segements[j].color)continue;r=Click_Box(i,k,segements[j].len+len)+Click_Box(k+1,j-1,0);result=max(result,r);}score[i][j][len]=result;return result;
}int main()
{int t,T,last,num,i,n,m;scanf("%d",&T);for(t=1; t<=T; ++t){last=0;num=-1;memset(score,-1,sizeof(score));scanf("%d",&m);for(i=0; i<m; ++i){scanf("%d",&n);if(n!=last){num++;segements[num].len=1;segements[num].color=n;last=n;}elsesegements[num].len ++;}
//        for(i=0;i<num;++i)
//            cout<<segements[i].len<<"  "<<segements[i].color<<endl;printf("Case %d: %d\n",t,Click_Box(0,num,0));}return 0;
}

代码2:自己写的

#include<iostream>
#include<algorithm>
#include<fstream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<string>
#include<cmath>
#include<cctype>
#include<vector>
#include<limits.h>
#include<queue>using namespace std;int dp[210][210][210];
int color[210];
int leng[210];
int Dp(int i,int j,int len)
{if(dp[i][j][len]!=-1)return dp[i][j][len];int ans=(leng[j]+len)*(leng[j]+len);if(i==j)return ans;ans+=Dp(i,j-1,0);for(int k=i; k<j; k++){if(color[k]==color[j])ans=max(ans,Dp(i,k,leng[j]+len)+Dp(k+1,j-1,0));}dp[i][j][len]=ans;return ans;
}
int main()
{int t,ans,n,m,num,j,l,i;scanf("%d",&t);for(l=1; l<=t; ++l){scanf("%d",&n);memset(dp,-1,sizeof(dp));for(ans=-1,i=1,j=0; i<=n; ++i){scanf("%d",&m);if(ans!=m){j++;color[j]=m;leng[j]=1;ans=m;}else{leng[j]++;}}num=Dp(0,j,0);printf("Case %d: %d\n",l,num);}return 0;
}

3.采用递推解法,

#include<iostream>
#include<algorithm>
#include<fstream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<string>
#include<cmath>
#include<cctype>
#include<vector>
#include<limits.h>
#include<queue>using namespace std;int dp[205][205][205];
int color[205]; //记录颜色
int len[205];   //对应的长度
int pre[205];   //记录与该颜色相同的前一个
int pos[205];int main()
{int n,pr,i,j,k,l,t,tot,a,length,Case=0;scanf("%d",&t);while(t--){n=0;pr=-1;scanf("%d",&tot);   //总共有几个小块for(i=1; i<=tot; ++i){scanf("%d",&a);if(a!=pr){color[++n]=a;pr=a;len[n]=1;}else++len[n];}memset(dp,0,sizeof(dp));memset(pos,0,sizeof(pos));for(i=1; i<=n; ++i){pre[i]=pos[color[i]];   //记录与此颜色相同的前坐标pos[color[i]]=i;}for(length=0; length<n; ++length)   //for循环内的顺序不可以改变,他是从头到尾求每个点依次加length++,先求每个短区间,,逐渐求大区间{for(i=1;; ++i){j=i+length;if(j>n)break;for(k=0; k<=tot; ++k){dp[i][j][k]=dp[i][j-1][0]+(len[j]+k)*(len[j]+k);for(l=pre[j]; l>=i; l=pre[l])   //这个pre数组运用的很巧妙dp[i][j][k]=max(dp[i][j][k],dp[i][l][k+len[j]]+dp[l+1][j-1][0]);}}}printf("Case %d: %d\n",++Case,dp[1][n][0]);}return 0;
}

POJ1390 方盒游戏相关推荐

  1. Blocks(poj 1390) 动态规划 方盒游戏 (升维——三维)

    Blocks  点击转到 Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 6197   Accepted: 2557 Desc ...

  2. poj 1390:Blocks 方盒游戏

    总时间限制: 5000ms 内存限制: 65536kB 描述 Some of you may have played a game called 'Blocks'. There are n block ...

  3. 动态规划——方盒游戏详解

    题目就是这样,接下来我们来分析这个题目 分析 我们用click_box(i,j)来表示消除大块 i 到 j 所得到的最大分数,用 len[ i ]来表示第 i 个大块的长度. 这时我们就是要求clic ...

  4. 不可错过的250款独立游戏(珍藏版)

    <不可错过的250款独立游戏(珍藏版)> 基本信息 作者: Mike Rose 出版社:清华大学出版社 ISBN:9787302314608 上架时间:2013-4-26 出版日期:201 ...

  5. 泰捷we30c系统语言,系统简洁、稳定,开机无广告 泰捷方盒WE30C升级版日常体验...

    如今的智能电视满天飞,开机慢.广告多被饱受诟病,而我个人还是倾向于推荐传统电视+智能电视盒的组合,一来回归电视机本身应有的定位,二来传统电视少卡顿无广告. 最近朋友推荐了泰捷方盒WE30C升级版给我, ...

  6. 康威生命游戏是如何搭建计算机的?

    2020年4月,数学家约翰·康威(John H. Conway)因新冠肺炎去世.大家回顾康威教授平生贡献时,不可避免要提到伟大.深刻的"康威生命游戏"(Conway's Game ...

  7. 蓝牙小电池图标_方寸间、掌握中,omthing小方盒开箱测评

    市面上的蓝牙耳机越来越多,每一款都让"打工人"感觉到迷惑,到底什么是最好?什么才是最适合"打工人"的耳机?今天我们开箱的这款万魔声学旗下品牌omthing的首款 ...

  8. 游戏渲染建模常用到的相关名词 AlvinCR个人理解-(烘焙、法线、LOD、UV坐标、各向异性)

    本文是UE4世界场景构建总览一文的名词解释部分 如有更新:https://alvincr.com/2021/01/ue4-1-world-creat-pandect/#Related_posts 1 ...

  9. 从《Doom》到《Dunia》 回顾3D游戏引擎发展历程二

    Quake III / id Tech 3 就像AMD与Intel,Nvidia与ATI,10年前,游戏引擎的战争主要集中在Quake III(现在被称为id Tech 3)与Unreal之间. 顾名 ...

最新文章

  1. BZOJ3799 : 字符串重组
  2. 编译GSLSDevil的全过程
  3. python 生成器笔记
  4. ubuntu wps缺少字体_WPS各版本
  5. 解决“HTTP/1.1 405 Method not allowed”问题
  6. Luogu1640 连续攻击游戏
  7. 2016年1月书单推荐
  8. OpenSSL常见用法
  9. 给JDK设置tmp目录的办法
  10. 流迭代器实现文件操作(读取和写入)
  11. win10系统打开tftp服务器,win10系统开启TFTp的操作方法
  12. 西门子Step7的AT指令示例
  13. sqlserver2012下载地址
  14. uni-app,H5抽奖
  15. 强大的类似qq截图或者微信截图功能软件
  16. 计算机图形学流体仿真mac网格,数据驱动的快速网格法流体模拟
  17. HCNP学习笔记之OSPF协议原理及配置1-基础知识
  18. 智能客服机器人+在线客服,让你的服务不间断
  19. 素质、职教、信息化:教育实时互动的新命题
  20. 基于DANN的图像分类任务迁移学习

热门文章

  1. 野蛮删除腾讯电脑管家
  2. 《Mybatis 手撸专栏》第6章:数据源池化技术实现
  3. android 截屏 效率,android 截屏以及对该图进行模糊
  4. LeetCode 195. Tenth Line (shell)
  5. AI动漫头像生成神器来了
  6. 单例模式出现内存reorder,以及解决
  7. plt | Matplotlib概述
  8. 搜狗深度学习技术在广告推荐领域的应用
  9. 讲座预告 | 清华软件论坛:CrowdOS:群智感知理论、方法与系统平台
  10. nginx反向代理Https、代理解决跨域问题