codeforces 159D Palindrome pairs
2013-11-02 12:27
453 查看
分析:很容易想到的就是暴力解决,枚举以i为分隔点进行前后回文串总数的相乘。一开始想的可能会超时,结果AC了,不过网上还有一种比较省时的枚举回文串的方法,比较好!
虽然上面显示dp,string,但我感觉这完全就是string 的题目。
解法1、
解法2、
虽然上面显示dp,string,但我感觉这完全就是string 的题目。
解法1、
#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int maxn = 2050; int dpl[maxn],dpr[maxn]; char str[maxn]; bool judge(int i,int j){ while(i<j){ if(str[i]!=str[j]){ return false; } i++; j--; } return true; } int main(){ while(~scanf("%s",str)){ memset(dpl,0,sizeof(dpl)); memset(dpr,0,sizeof(dpr)); int len=strlen(str); for(int i=0;i<len;i++){ for(int j=0;j<=i;j++){ if(judge(j,i)){ dpl[i]++; } } for(int j=len-1;j>=i;j--){ if(judge(i,j)){ dpr[i]++; } } } for(int i=1;i<len;i++){ dpl[i]+=dpl[i-1]; } long long ans=0; for(int i=0;i<len-1;i++){ ans+=dpl[i]*dpr[i+1]; } printf("%I64d\n",ans); } }
解法2、
#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int maxn = 2050; int dpl[maxn],dpr[maxn]; char str[maxn]; int main(){ while(~scanf("%s",str)){ memset(dpl,0,sizeof(dpl)); memset(dpr,0,sizeof(dpr)); int len=strlen(str); for(int i=0;i<len;i++){ int j1,j2; for(j1=i,j2=i;str[j1]==str[j2] && j1>=0 && j2<len;j1--,j2++){ dpr[j1]++; dpl[j2]++; } for(j1=i,j2=i+1;str[j1]==str[j2] && j1>=0 && j2<len;j1--,j2++){ dpr[j1]++; dpl[j2]++; } } for(int i=1;i<len;i++){ dpl[i]+=dpl[i-1]; } long long ans=0; for(int i=0;i<len-1;i++){ ans+=dpl[i]*dpr[i+1]; } printf("%I64d\n",ans); } }
相关文章推荐
- [转]iis7.5+win2008 出现 HTTP Error 503. The service is unavailable.
- Windows7 IIS7.5 HTTP Error 503 The service is unavailable 另类解决方案
- 报表之PlainText
- RAID 详解
- Naive Bayes 算法,R 实现,二元正态样本 demo
- UVA 1326 Jurassic Remains
- akamai:与看视频广告等待相比,用户更不能忍受缓冲等待
- akamai:与看视频广告等待相比,用户更不能忍受缓冲等待
- akamai:与看视频广告等待相比,用户更不能忍受缓冲等待
- Training—Saving Data
- Daily Scrum 11.01
- 算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)
- 机器学习与人工智能学习资源导引
- hdu-1021-Fibonacci Again
- Failed to load platform plugin "windows"
- E-mail Composition and Decoding
- aizu 1318 Long Distance Taxi
- AIX下crontab不执行
- aix中大文件限制的问题
- libcmtd.lib(crt0.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用