方块消除 (黑书)
来源:互联网 发布:kindle保护套推荐知乎 编辑:程序博客网 时间:2024/05/21 18:49
P123
题意: 把一个连续的不同颜色的进行消除,如果颜色相同的N块连在一起,可以一次消除,得分为N*N。然后在这种颜色的两端的方块合拢
重新连到一起。
比如:1 2 2 2 2 3 3 3 1
最高得分为: 4*4+3*3+2*2=29
这个是看书后自己写的。
#include<iostream>#include<cstdio>#include<algorithm>#include<queue>#include<vector>#include<cmath>#include<set>#include<cstdlib>#include<cstring>#include<stack>#include<string>using namespace std;int color[1111];int len[1111];int go[111111];int n;int d(int k){return k*k;}int f(int i,int j,int v,int c){//cout<<i<<' '<<v<<' '<<c<<endl;int small=0;int k;if (i>j)return d(v);if (i<0)return d(v);if (i==j)return c==color[i]?d(len[i]+v):d(len[i])+d(v);for (k=i;k<=j;k++){if (c==color[k])small=max(small,f(i,k-1,v+len[k],c)+f(k+1,j,0,0));else small=max(small,f(i,k-1,len[k],color[k])+d(v)+f(k+1,j,0,0));}//cout<<small<<endl;return small;}int main(){freopen("in.txt","r",stdin);int i,j,k;while (cin>>n,n){for (i=0;i<n;i++)cin>>go[i];k=1;color[0]=go[0];len[0]=1;for (i=1;i<n;i++){if (go[i]==go[i-1]){len[k-1]++;}else {color[k]=go[i];len[k]=1;k++;}}for (i=0;i<k;i++)cout<<i<<' '<<f(0,i,0,0)<<endl;}return 0;}
- 方块消除 (黑书)
- poj 1390 Blocks(dp,黑书dp方块消除)
- [POJ1390]Blocks(方块消除)
- 10559 - Blocks(方块消除|DP)
- 消除pdf乱码方块
- poj1390 方块消除 dp
- POJ 1390 方块消除
- uva 10559 方块消除
- NKOJ-3698 方块消除
- P4230方块消除
- 方块消除游戏
- poj-1390-Blocks(方块消除)-DP
- poj 1390 Blocks (经典区间dp 方块消除)
- 方块消除游戏(完美世界2017秋招真题)
- poj 1390 Blocks 方块消除
- 消除webView黑边
- 例题9-27 方块消除 UVa10559
- 记忆化搜索专题--nkoj3698方块消除
- linux下修改tomcat的默认目录
- 敏捷开发一千零一问系列之十六:如何让开发人员学习产品?
- 流处理器数量
- protected与default的区别
- 敏捷开发一千零一问系列之十七:长期受制于强势客户怎么办?(上)
- 方块消除 (黑书)
- 一个类似ifconfig功能的程序代码--C语言
- Apophysis作品——鸟巢渲染日志
- 敏捷开发一千零一问系列之十八:长期受制于强势客户怎么办?(下)
- C语言内存分配及函数返回值的解析。
- 敏捷开发一千零一问系列之十九:提问帖
- jQuery中10个强大的遍历函数
- EasyX帮助文档
- 编辑器王者SlickEdit使用_设置篇