CDOEVS 2980 买帽子
来源:互联网 发布:手机淘宝页面怎么装修 编辑:程序博客网 时间:2024/04/28 00:04
这个题和我在初赛时做的一个题比较像,那是个读程序写结果的题,然后我就提取了它的思想做了一下。
还是dp,用二维数组f[i][j]表示字符串起点为i,终点为j的系数,当字符串st[i-1]和st[j-1](字符串起点为0)相等时f[i][j]=f[i+1][j-1]+2,不然就赋值为f[i][j-1]和f[i+1][j]里的最大值,即求最长对称子序列。全都求出来之后排一下序就行了。
#include<cstdio>#include<iostream>#include<string>#include<cstring>#include<algorithm>using namespace std;struct JK{ string st; int l;}cap[110];int f[510][510];int n;bool cmp(JK a,JK b){ if (a.l==b.l) return a.st<b.st; return a.l>b.l;}int main(){ cin>>n; int len; for (int i=1;i<=n;i++) { cin>>cap[i].st; len=cap[i].st.length(); memset(f,0,sizeof(f)); for (int j=1;j<=len;j++) f[j][j]=1; for (int j=len;j>=1;j--) for (int k=j+1;k<=len;k++) { if (cap[i].st[j-1]==cap[i].st[k-1]) f[j][k]=max(f[j][k],f[j+1][k-1]+2); else f[j][k]=max(f[j][k],max(f[j][k-1],f[j+1][k])); } cap[i].l=f[1][len]; } sort(cap+1,cap+n+1,cmp); for (int i=1;i<=n;i++) cout<<cap[i].st<<endl; return 0;}
0 0
- CDOEVS 2980 买帽子
- 2980 买帽子
- Codevs 2980 买帽子
- Codevs 2980 买帽子
- 买帽子
- 买帽子
- 买帽子
- Codevs 2980 买帽子 dp(LIS)
- codevs 2980 买帽子(DP)
- codevs 2980 买帽子 题解报告
- codeves 2980 买帽子 字符串dp
- <序列DP>codevs 2980 买帽子
- 【codevs2980】买帽子
- code vs 买帽子
- codevs2980买帽子
- 百度笔试- 买帽子
- 牛客网 买帽子
- [编程题] 买帽子
- 【record】10.30..11.6
- Android7.0 Ninja编译原理
- bzoj 3787: Gty的文艺妹子序列 分块+树状数组
- 调整版PHP的CURL类(POST、GET、PUT、DELETE)
- 硬件设计笔记の运算放大器
- CDOEVS 2980 买帽子
- 大数据安全保护技术综述-网络与信息安全学报-2016
- 【持续更新】大大大大大模板
- 倍升工作效率的小策略
- yii2框架详解
- 关于微信公众号投票结果的通告
- 深入理解 yii2的Active Record
- 杂记1
- 2016年末程序员突破自我的绝密方法分享