码迷,mamicode.com
首页 > 其他好文 > 详细

【HDOJ】1243 反恐训练营

时间:2015-01-01 18:29:52      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

LCS.

 1 /* 1243 */
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cstdlib>
 5 
 6 #define MAXN 2025
 7 #define MAXM 256
 8 
 9 char type[MAXM];
10 int point[MAXM];
11 
12 char bullet[MAXN];
13 char kbfz[MAXN];
14 int dp[MAXN][MAXN];
15 int  n;
16 
17 int min(int a, int b) {
18     return a<b ? a:b;
19 }
20 
21 int max(int a, int b) {
22     return a>b ? a:b;
23 }
24 
25 int abs(int x) {
26     return x<0 ? -x:x;
27 }
28 
29 int main() {
30     int i, j, k;
31     int l1, l2;
32     
33     #ifndef ONLINE_JUDGE
34         freopen("data.in", "r", stdin);
35     #endif
36     
37     while (scanf("%d", &n) != EOF) {
38         memset(point, 0, sizeof(point));
39         scanf("%s", type);
40         for (i=0; i<n; ++i) {
41             scanf("%d", &k);
42             point[type[i]] = k;
43         }
44         scanf("%s", bullet+1);
45         scanf("%s", kbfz+1);
46         l1 = strlen(bullet+1);
47         l2 = strlen(kbfz+1);
48         for (i=0; i<=max(l1, l2); ++i) {
49             dp[0][i] = 0;
50             dp[i][0] = 0;
51         }
52         for (i=1; i<=l1; ++i) {
53             for (j=1; j<=l2; ++j) {
54                 if (bullet[i] == kbfz[j]) {
55                     dp[i][j] = dp[i-1][j-1] + point[bullet[i]];
56                 } else  {
57                     k = max(dp[i-1][j], dp[i][j-1]);
58                     dp[i][j] = max(k, dp[i-1][j-1]);
59                 }
60             }
61         }
62         printf("%d\n", dp[l1][l2]);
63     }
64     
65     return 0;
66 }

 

【HDOJ】1243 反恐训练营

标签:

原文地址:http://www.cnblogs.com/bombe1013/p/4197375.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!