zoj 1642 Match for Bonus

来源:互联网 发布:对大数据的理解和认识 编辑:程序博客网 时间:2024/06/11 08:45
/*注意数组长度小的话会SF大的话会MLE提交了四次2005正好经典dp题与最长子串不同的是相等情况下不再加1加的是相应字符的权值*/#define LOCAL#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<cstdlib>#include<iomanip>#include<string>#include<algorithm>#include<ctime>#include<stack>#include<queue>#include<vector>#define N 2005using namespace std;int dp[N][N],nchar;class CH_VALUE{public:char ch;int value;};CH_VALUE ch_value[N];int get_value(char ch){int i;for(i=0;i<nchar;i++){if(ch==ch_value[i].ch) return ch_value[i].value;}}int main(){#ifdef LOCAL       freopen("input.txt","r",stdin);       freopen("output.txt","w",stdout);#endifstring str1,str2;int strlen1,strlen2,i,j;while(cin>>nchar){for(i=0;i<nchar;i++)cin>>ch_value[i].ch>>ch_value[i].value;cin>>str1>>str2;strlen1=str1.size();strlen2=str2.size();memset(dp,0,sizeof(dp));for(i=1;i<=strlen1;i++){for(j=1;j<=strlen2;j++){if(str1[i-1]==str2[j-1]){dp[i][j]=dp[i-1][j-1]+get_value(str1[i-1]);}else{dp[i][j]=(dp[i-1][j]>dp[i][j-1]?dp[i-1][j]:dp[i][j-1]);}}}cout<<dp[strlen1][strlen2]<<endl;}return 0;}

原创粉丝点击