ZOJ 1642 Match for Bonus
2010-07-14 08:59
435 查看
最长公共子序列的变形,其实思想上都是一样的,LCS是在字符相同时加1,而这个题是加上题目中给出的bonus.
#include<stdio.h> int Nchar; char a[2005],b[2005]; int lena,lenb; char chars[100]; int bonus[100]; int opt[2005][2005]; int nLen1,nLen2; int search(char a) //找出字符对应的bonus { int i; for(i = 1;i <= Nchar;i++) if(chars[i] == a ) return bonus[i]; } int main(void) { int i,j; while(scanf("%d",&Nchar) != EOF) { for( i = 1 ; i <= Nchar ; i++ ) { getchar(); chars[i] = getchar(); scanf("%d",&bonus[i]); } scanf("%s%s",a+1,b+1); lena = strlen(a+1); lenb = strlen(b+1); for( i = 0 ; i <= lena ; i++ ) opt[0][i] = 0; for( i = 0 ; i <= lenb ; i++ ) opt[i][0] = 0; for( i = 1 ; i <= lena ; i++ )//关键代码 { for( j = 1 ; j <= lenb ; j++ ) { if(a[i] == b[j]) opt[i][j] = opt[i-1][j-1] + search(a[i]);//LCS这里是加1 else { nLen1 = opt[i][j-1]; nLen2 = opt[i-1][j]; opt[i][j] = nLen1>nLen2?nLen1:nLen2; } } } printf("%d/n",opt[lena][lenb]); } return 0; }
相关文章推荐
- zoj 1642 Match for Bonus[dp,lcs]
- zoj 1642 - Match for Bonus
- ZOJ 1642 Match for Bonus
- ZOJ 1642 Match for Bonus(LCS)
- 子串数据ZOJ 1642 Match for Bonus
- zoj 1642 Match for Bonus(动态规划)
- ZOJ 1642 Match for Bonus(dp)
- zoj 1642 Match for Bonus
- zoj1642 Match for Bonus(DP)
- zoj1642——Match for Bonus
- ZOJ 1642 Match for Bonus
- ZOJ 1642 Match for Bonus
- zoj 1642 Match for Bonus
- ZOJ 1642 Match for Bonus (DP)
- ZJU 1642 Match for Bonus
- Match for Bonus
- aop.AopInvocationException: null return value from advice does not match primitive return type for
- Error:Debugging information for "project.exe" cannot be found or does not match. Binary was not ……
- [Android 解决 “'default' is not a best match for any device/locale ]
- error LNK2038: mismatch detected for \'_ITERATOR_DEBUG_LEVEL\': value \'0\' doesn\'t match value \'2\' in *.obj