Advertisement
Guest User

Untitled

a guest
Apr 5th, 2020
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.86 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. string arr;
  4. int k, n;
  5. int mp[26][26];
  6. bool is[101][26][1000];
  7. int hi[101][26][1000];
  8. int recursive(int s, char prev, int le){
  9.     if(s==arr.size())
  10.         return 0;
  11.     if(le<0)
  12.         return -200000000;
  13.     if(is[s][prev-'a'][le])
  14.         return hi[s][prev-'a'][le];
  15.     int maxi=-200000000;
  16.     for(char a='a'; a<='z'; a++){
  17.         int l=0;
  18.         if(a!=arr[s])
  19.             l++;
  20.         if(s==0)
  21.             maxi=max(maxi, recursive(s+1, a, le-l));
  22.         else
  23.             maxi=max(maxi, recursive(s+1, a, le-l)+mp[prev-'a'][a-'a']);
  24.     }
  25.     is[s][prev-'a'][le]=true;
  26.     hi[s][prev-'a'][le]=maxi;
  27.     return maxi;
  28. }
  29. int main(){
  30. cin>>arr>>k;
  31. cin>>n;
  32. char a, b;
  33. int c;
  34. for(int i=0; i<n; i++){
  35.     cin>>a>>b>>c;
  36.     mp[a-'a'][b-'a']=c;
  37. }
  38. cout<<recursive(0, 'a', k)<<'\n';
  39. return 0;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement