hdu 4632区间dp
来源:互联网 发布:歼十外销知乎 编辑:程序博客网 时间:2024/05/17 21:44
给你一个字符串 让你求最大回文子序列的个数;dp【i】【j】表示i到j的最大回文子序列个数(注意是个数,就要有累加过程 如果是最大长度 就直接赋值)
首先dp【i】【j】=dp【i+1】【j】+dp【i】【j-1】 中间有重复的()就是与i+1余j-1无关的 所以还得减去dp【i+1】【j-1】
然后判断str【i】与str【j】是否相等,如果是再加上dp【i+1】【j-1】+1;
#include<stdio.h>#include<string.h>#include<algorithm>#include<iostream>using namespace std;#define mod 10007int dp[1010][1010];int max(int a,int b){ return a>b?a:b;}int main(){ int T,i,j,n,d=1; char str[1010]; scanf("%d",&T); while(T--) { scanf("%s",str); int len=strlen(str); memset(dp,0,sizeof(dp)); for(i=len-1;i>=0;i--) { for(j=i;j<len;j++) { dp[i][j]=(dp[i+1][j]+dp[i][j-1]-dp[i+1][j-1]+mod)%mod; if(str[i]==str[j]) dp[i][j]=(1+dp[i+1][j-1]+dp[i][j])%mod; } } printf("Case %d: %d\n",d++,dp[0][len-1]); } return 0;}
0 0
- hdu-4632(区间dp)
- hdu 4632区间dp
- HDU 4632 Palindrome subsequence(区间dp)
- HDU 4632 - Palindrome subsequence(区间DP)
- HDU 4632 Palindrome subsequence (区间DP)
- HDU 4632 Palindrome subsequence(区间dp)
- HDU 4632 Palindrome subsequence(区间DP)
- HDU 4632 Palindrome subsequence (区间DP)
- HDU 4632 Palindrome subsequence (区间DP)
- HDU 4632 回文串(区间dp)
- HDU 4632 Palindrome subsequence(区间dp)
- HDU 4632 Palindrome subsequence(区间DP)
- hdu 区间dp 2476
- hdu 4283 区间DP
- HDU 2476 区间dp
- HDU 4283 区间DP
- HDU 2476 区间DP
- hdu 4293 区间dp
- 走迷宫 算法竞赛入门经典6.4.2
- live555学习笔记-基础类
- String StringBuffer StringBuilder原理
- 原材送检频次
- 基于Energia的MPS430单片机编程
- hdu 4632区间dp
- 关于Windows 数据库服务器更换为Linux 数据库服务器的前提条件
- 硅谷归来:中国在“互联网夹",美国已进入“新硬件时代”
- Hadoop MapReduce
- UVA 1638(动态规划)
- Ie中的404错误
- Redis源码阅读之aof.c
- 【c语言】关于+1的各种情况
- HDU4706——Children's Day(简单模拟)