ZOJ 1642 Match for Bonus(LCS)
2014-04-02 17:58
344 查看
题意:给出每个字符的权值,求两个字符串的子序列能够获得的最多权值.
解法:就是LCS问题,只不过长度变成了权值.
题目里没给出字符长度WA好几次,2300左右就差不多了.
解法:就是LCS问题,只不过长度变成了权值.
题目里没给出字符长度WA好几次,2300左右就差不多了.
#include <cstdio> #include <algorithm> #include <memory.h> using namespace std; const int MAX = 2200; int dp[MAX][MAX]; int bonus[256]; char s1[MAX], s2[MAX]; int main(int argc, char const *argv[]){ int N; while(scanf("%d", &N) == 1){ memset(bonus, 0, sizeof(bonus)); for(int i = 1; i <= N; ++i){ char c[2]; int v; scanf("%s %d", c, &v); bonus[c[0]] = max(bonus[c[0]], v); } getchar(); memset(dp, 0, sizeof(dp)); gets(s1 + 1); gets(s2 + 1); int len1 = strlen(s1 + 1), len2 = strlen(s2 + 1); for(int i = 1; i <= len1; ++i){ for(int j = 1; j <= len2; ++j){ if(s1[i] == s2[j]){ dp[i][j] = dp[i - 1][j - 1] + bonus[s1[i]]; }else{ dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]); } } } printf("%d\n", dp[len1][len2]); } return 0; }
相关文章推荐
- zoj 1642 Match for Bonus[dp,lcs]
- ZOJ 1642 Match for Bonus
- zoj 1642 Match for Bonus(动态规划)
- 子串数据ZOJ 1642 Match for Bonus
- zoj 1642 Match for Bonus
- zoj 1642 - Match for Bonus
- ZOJ 1642 Match for Bonus
- ZOJ 1642 Match for Bonus (DP)
- zoj1642 Match for Bonus(DP)
- ZOJ 1642 Match for Bonus
- zoj1642——Match for Bonus
- zoj 1642 Match for Bonus
- ZOJ 1642 Match for Bonus(dp)
- ZOJ 1642 Match for Bonus
- ZJU 1642 Match for Bonus
- Match for Bonus
- The best overloaded method match for *** has some invalid
- ZOJ 2315 New Year Bonus Grant(贪心)
- zoj 2315 New Year Bonus Grant
- no match for ‘operator=’ 等号两端 不匹配