Palindrome subsequence HDU - 4632

#include<iostream>
#include<string.h>
using namespace std;

const int mod=10007;
int dp[1009][1009];

int main(){
	int t;int ca=0;
	while(~scanf("%d",&t)){
		ca++;
		string ss;cin>>ss;
//		cout<<ss<<endl;
		int sz=ss.size();
		memset(dp,0,sizeof(dp));
		for(int i=0;i<sz;i++){
			dp[i][i]=1;
		}
		for(int j=0;j<sz;j++){
			for(int i=j-1;i>=0;i--){
				dp[i][j]=(dp[i+1][j]+dp[i][j-1]-dp[i+1][j-1]+mod)%mod;
				if(ss[i]==ss[j]) dp[i][j]=(dp[i][j]+dp[i+1][j-1]+1+mod)%mod;
			}
		}
		printf("Case %d: %d\n",ca,dp[0][sz-1]);
	}
}
全部评论

相关推荐

02-07 10:52
复旦大学 Java
混子不想混:非常能理解,感觉他们就靠着入行早,打压新人一样。我这个公司也是,天天干的累死累活,然后绩效打C,合着让新人被绩效,像是年底攒棺材本一样。总是打击之后,还会让人开始自我怀疑,是不是我努力的还不够,实际上并不是,就是他们不做人,故意打压新人。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务