题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2624

题目大意:popo要将给定数量的灯变成自己想要的颜色,有一种魔法开关,可以将一连串的灯同时变成同一个颜色。给定灯的数量和popo想要实现的状态,求最小步数

Sample Input

5
RGBGR
4
RGRG
7
ABACADA
0

Sample Output

3
3
4

分析:令f[x][y]表示从第 x 个灯到第 y 个灯变成目标状态的最小花费,则初始时为最大值。而f[x][x]=1。

  则f[x][y] =min{ f[x][k-1]+f[k][y] | x<k<y}

  当第x,y个灯的目标状态是同一颜色时,就可以一次性将2个灯变成想要的状态

代码如下:

 # include<iostream>
# include<cstdio>
# include<cstring>
#define MAX 0xFFFFFF
using namespace std;
char str[];
int f[][],n;
int dfs(int x,int y)
{
int i;
int min=y-x+,temp;
for(i=x+; i<=y; i++)
{
if(f[x][i-]==MAX)
f[x][i-]=dfs(x,i-); if(f[i][y]==MAX)
f[i][y]=dfs(i,y); if(min>f[x][i-]+f[i][y])
min=f[x][i-]+f[i][y];
}
if(str[x]==str[y])
{
if(x+<n)
{
if(f[x+][y]==MAX)
temp=dfs(x+,y);
else
temp=f[x+][y];
}
else
temp=;
if(min>temp)
min=temp;
if(y->)
{
if(f[x][y-]==MAX)
temp=dfs(x,y-);
else
temp=f[x][y-];
}
else
temp=;
if(min>temp)
min=temp;
if(x+<n && y->)
{
if(f[x+][y-]==MAX)
temp=dfs(x+,y-)+; //额外增加一步将x,y2个灯变成目标状态的步骤
else
temp=f[x+][y-]+;
}
else
temp=;
if(min>temp)
min=temp;
}
f[x][y]=min;
return f[x][y]; }
int main ()
{
int i,j;
while(scanf("%d",&n) && n)
{
scanf("%s",str);
for(i=; i<n; i++)
for(j=i+; j<n; j++)
{
f[i][j]=MAX;
f[j][i]=;
}
for(i=; i<n; i++)
f[i][i]=; printf("%d\n",dfs(,n-));
}
return ;
}

OJ返回”Non-zero Exit Code“这种错误,是因为最后没有写return 0;或者写成了return 1;之类的,只要改成return 0;就可以了

最新文章

  1. 开发Yii2过滤器并通过behaviors()行为调用
  2. SpringData JPA详解
  3. java -version
  4. 添加线标注ILineElement
  5. DevExpress 控件使用之BarManager
  6. Entity Framework 学习中级篇2—存储过程(上)
  7. 在.NET项目中使用PostSharp,使用MemoryCache实现缓存的处理
  8. 浅论Javascript在汽车信号测试中的应用
  9. python enumerate 枚举函数用法
  10. 2016-2017-2 《Java 程序设计》课堂实践项目
  11. 单例模式的优化之路(java)
  12. python之pickle
  13. CEF 支持JSON操作
  14. 上传图片(photoClip)
  15. ARP协议具体解释之Gratuitous ARP(免费ARP)
  16. 第 8 章 容器网络 - 058 - flannel 概述
  17. php把数据转换为json格式
  18. blog 社会化评论插件 多说for china, disqus for global range
  19. iOS学习之WebView的使用 (主要是下面的全屏半透明实现)
  20. 【采集层】Kafka 与 Flume 如何选择

热门文章

  1. C#操作符的重载
  2. RocketMQ常用命令
  3. java图片处理
  4. innobackupex 单脚本循环7天一全备6增备脚本更新
  5. Ps切图学习
  6. cocos2d-x 网格动画深入分析
  7. PHP 文件包含之文件路径截断(转)
  8. SQL索引详解
  9. PCL 点云数据操作 OpenCV遍历数据
  10. 基于注解的Spring MVC整合Hibernate(所需jar包,spring和Hibernate整合配置,springMVC配置,重定向,批量删除)