南阳理工OJ_题目1023 还是回文

来源:互联网 发布:帝国cms商城模板 编辑:程序博客网 时间:2024/06/05 05:24
#include <iostream>#include <cstring>using namespace std;int dp();char ch[2010];int d[2010][2010];int m, n;int cost_add['z'+2];int cost_sub['z'+2];int main(){    while(cin >> n >> m)    {        cin >> (ch+1);        for(int i = 1; i <= n; i++)        {            char c;            cin >> c;            cin >> cost_add[c] >> cost_sub[c];        }        cout << dp() << '\n';    }}int dp(){    int i = 1;    int j = m;    memset(d, 0, sizeof(d));    for(int i = m; i >= 1; i--)        for(int j = i; j<= m; j++)        {            if(ch[i] == ch[j])                d[i][j] = d[i+1][j-1];            else            {                int t1, t2;                t1 = d[i+1][j] + min(cost_add[ ch[i] ], cost_sub[ ch[i] ]);                t2 = d[i][j-1] + min(cost_add[ ch[j] ], cost_sub[ ch[j] ]);                d[i][j] = min(t1, t2);            }        }    return d[1][m];}

0 0
原创粉丝点击