首页 > 代码库 > HDU 1243 DP
HDU 1243 DP
思路和1080一样
题目有几个坑:
范围要开到2010,题目没有给
子弹数量和恐怖分子出现的字符串长度不一定相等
用memset会超时
#include "stdio.h" #include "string.h" int dp[2010][2010],a[2010]; int Max(int a,int b,int c) { int x; x=a; if (b>x) x=b; if (c>x) x=c; return x; } int main() { int n,i,j,x,y,z,len_a,len_b; char key[2010],str_a[2010],str_b[2010]; while (scanf("%d",&n)!=EOF) { scanf("%s",key); for (i=0;i<n;i++) scanf("%d",&a[key[i]]); scanf("%s %s",str_a,str_b); len_a=strlen(str_a); len_b=strlen(str_b); for (i=1;i<=n;i++) dp[0][i]=dp[i][0]=0; dp[0][0]=0; for (i=1;i<=len_a;i++) for (j=1;j<=len_b;j++) { x=dp[i-1][j]; y=dp[i][j-1]; z=dp[i-1][j-1]; if (str_a[i-1]==str_b[j-1]) z+=a[str_a[i-1]]; dp[i][j]=Max(x,y,z); } printf("%d\n",dp[len_a][len_b]); } return 0; }
HDU 1243 DP
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。