UVa:10617 Again Palindrome
来源:互联网 发布:js替换字符串中的数字 编辑:程序博客网 时间:2024/06/07 12:20
这个题我是用递推做的。
dp[i][j]表示【i,j】区间内以j为回文最后一个字符时的回文个数。
那么状态转移方程就是
if i==j dp[i][j]=1
else if str[i]==str[j] :dp[i][j]=dp[i+1][k](k取值从0到j)之和+1
else dp[i][j]=dp[i+1][j]
其中求和那部分可以用一个数组存下来这样时间复杂度n^2即可。
一开始觉得longlong可能存不下于是用了大数。后来用了longlong交上去发现时间比用大数还慢。。UVa有时候真奇怪。。
#include <iostream>#include <cstdlib>#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 65#define ll long longusing namespace std;int main(){ int T; scanf("%d",&T); while(T--) { char str[MAXN]; scanf("%s",str); ll dp[MAXN][MAXN]= {0},sum[MAXN]= {0}; int L=strlen(str); for(int j=0; j<L; ++j) { for(int i=j; i>=0; --i) { if(i==j) dp[i][j]=1; else { if(str[i]==str[j]) dp[i][j]=sum[i+1]+1; else dp[i][j]=dp[i+1][j]; } sum[i]=sum[i]+dp[i][j]; } } ll ans=0; for(int i=0;i<L;++i) ans+=dp[0][i]; printf("%lld\n",ans); } return 0;}
0 0
- uva 10617 Again Palindrome
- UVA 10617 - Again Palindrome
- UVA 10617 Again Palindrome
- UVa 10617 - Again Palindrome
- uva 10617 Again Palindrome
- UVA - 10617 Again Palindrome
- UVa:10617 Again Palindrome
- UVA 10617 Again Palindrome
- uva 10617 - Again Palindrome
- UVA - 10617 Again Palindrome
- UVA - 10617 Again Palindrome
- UVA 10617 - Again Palindrome
- UVA 10617 Again Palindrome
- uva 10617 - Again Palindrome(dp)
- UVA 10617 Again Palindrome --dp
- UVa 10617 - Again Palindrome 字符串dp
- Uva 10617 Again Palindrome(区间dp)
- uva 10617 Again Palindrome (DP)
- JSON串:{"date":28,"day":3,"hours":5...转String 转Date 的相转方法
- Windows下的很多程序都有十分漂亮的菜单
- oracle jdk 1.6 下载链接
- php腾讯QQ 第三方登录 回调问题
- ZOJ 3740 —— Water Level(DP+线段树)
- UVa:10617 Again Palindrome
- 使用vs2010的基本设置
- 20分钟读懂程序集
- Hibernate深度学习笔记
- ubuntu编译安装静态库时遇到的问题,yacc和lex的安装
- 网络设备闲谈
- 听"易中天品三国"---有感于曹操的用人之道
- Hibernate配置文件属性学习笔记
- UITextField 开发笔记