Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- string arr;
- int k, n;
- int mp[26][26];
- bool is[101][26][1000];
- int hi[101][26][1000];
- int recursive(int s, char prev, int le){
- if(s==arr.size())
- return 0;
- if(le<0)
- return -200000000;
- if(is[s][prev-'a'][le])
- return hi[s][prev-'a'][le];
- int maxi=-200000000;
- for(char a='a'; a<='z'; a++){
- int l=0;
- if(a!=arr[s])
- l++;
- if(s==0)
- maxi=max(maxi, recursive(s+1, a, le-l));
- else
- maxi=max(maxi, recursive(s+1, a, le-l)+mp[prev-'a'][a-'a']);
- }
- is[s][prev-'a'][le]=true;
- hi[s][prev-'a'][le]=maxi;
- return maxi;
- }
- int main(){
- cin>>arr>>k;
- cin>>n;
- char a, b;
- int c;
- for(int i=0; i<n; i++){
- cin>>a>>b>>c;
- mp[a-'a'][b-'a']=c;
- }
- cout<<recursive(0, 'a', k)<<'\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement