会员
周边
众包
新闻
博问
闪存
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
サ繌н筻刂挭
博客园
首页
新随笔
联系
订阅
管理
ZJU 1642 Match for Bonus
分析:好邪恶的一题,是典型的LCS变形,数据规模没有给出,但却很大。直接开2维会超空间,要用滚动数组。
Code
#include
<
iostream
>
using
namespace
std;
#define
MAXLEN 10001
int
dp[
2
][MAXLEN];
int
values[
26
];
int
main()
{
char
strA[MAXLEN],strB[MAXLEN];
int
t;
while
(cin
>>
t)
{
memset(dp[
0
],
0
,MAXLEN
*
sizeof
(
int
));
for
(
int
i
=
0
;i
<
t;
++
i)
{
char
c;
int
v;
cin
>>
c
>>
v;
values[c]
=
v;
}
cin
>>
strA
>>
strB;
int
strALen
=
strlen(strA),strBLen
=
strlen(strB);
for
(
int
i
=
1
;i
<=
strALen;
++
i)
{
for
(
int
j
=
1
;j
<=
strBLen;
++
j)
{
if
(strA[i
-
1
]
==
strB[j
-
1
])
dp[
1
][j]
=
dp[
0
][j
-
1
]
+
values[strA[i
-
1
]];
else
dp[
1
][j]
=
max(dp[
0
][j],dp[
1
][j
-
1
]);
}
memcpy(dp[
0
],dp[
1
],MAXLEN
*
sizeof
(
int
));
}
cout
<<
dp[
0
][strBLen]
<<
endl;
}
return
0
;
}
posted @
2009-04-30 19:20
黄浩贤
阅读(
164
) 评论(
0
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部
公告