POJ 2955 Brackets(区间DP)
时间:2019-09-22
本文章向大家介绍POJ 2955 Brackets(区间DP),主要包括POJ 2955 Brackets(区间DP)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
嗯...
题目链接:http://poj.org/problem?id=2955
一道比较经典的区间dp,注意首先更新dp,然后再转移,转移的时候并没有什么代价,即dp[i][j] = max(dp[i][j], dp[i][k] + dp[k + 1][j]
AC代码:
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 5 6 using namespace std; 7 8 char s[105]; 9 int dp[1005][1005]; 10 11 inline bool judge(int x, int y){ 12 if(s[x] == '(' && s[y] == ')') return 1; 13 if(s[x] == '[' && s[y] == ']') return 1; 14 return 0; 15 }//判断 16 17 int main(){ 18 while(~scanf("%s", s)){ 19 memset(dp, 0, sizeof(dp)); 20 if(s[0] == 'e') break; 21 int len = strlen(s); 22 for(int l = 1; l < len; l++){ 23 for(int i = 0; i < len; i++){ 24 int j = i + l; 25 if(j > len) break; 26 if(judge(i, j)){ 27 if(j - i == 1) dp[i][j] = 2; 28 else dp[i][j] = dp[i + 1][j - 1] + 2; 29 }//更新dp 30 for(int k = i; k < j; k++){ 31 dp[i][j] = max(dp[i][j], dp[i][k] + dp[k + 1][j]); 32 }//转移 33 } 34 } 35 printf("%d\n", dp[0][len - 1]); 36 } 37 return 0; 38 }
原文地址:https://www.cnblogs.com/New-ljx/p/11569317.html
- 《快学Scala》第二章 控制结构和函数
- A+B for Input-Output Practice (VI)
- 前后端分离跨服务器文件上传-Java SpringMVC版
- 数组和链表的区别
- 《快学Scala》第一章 基础
- 二分查找法的实现和应用汇总
- 《快学Scala》第一章 基础
- 移动端打印输出内容以及网络请求-vconsole.js
- 二分查找法的实现和应用汇总
- JavaScript前端和Java后端的AES加密和解密
- 《Spark MLlib 机器学习实战》1——读后总结
- angularjs自定义指令实现分页插件
- A+B for Input-Output Practice (V)
- 机器学习——相似度算法汇总
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Windows和Linux实现远程桌面连接
- Ubuntu19.10开启ssh服务(详细过程)
- Ubuntu 18.04更换apt-get源的方法
- 浅谈Linux环境变量文件介绍
- linux创建线程之pthread_create的具体使用
- Ubuntu20.04安装搜狗输入法的详细步骤
- linux系统安装msf的过程详解
- Linux删除系统自带版本Python过程详解
- Linux时间子系统之时间的表示示例详解
- 如何在Linux中修改tomcat端口号
- centos7修改系统语言为简体中文的实现
- Linux 通过Rsync+Inotify实现本、异地远程数据实时同步功能
- linux实现猜数字小游戏源码
- linux编译kernel和svn版本冲突的解决办法
- 在 Ubuntu Linux 上安装 Oracle Java 14的方法