https://www.acwing.com/problem/content/3502/
1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 int n,k,m; 6 const int N = 210; 7 int a[N],w[N][N]; 8 int f[N][N]; 9 int main() 10 { 11 cin>>n>>k>>m; 12 for(int i=1;i<=m;i++) cin>>a[i]; 13 14 for(int i=1;i<=n;i++) 15 for(int j=1;j<=n;j++) 16 cin>>w[i][j]; 17 //初始化为f[0][0]=0; 18 for(int i=1;i<=m;i++){ 19 for(int j=0;j<=k;j++){ 20 for(int u=1;u<i;u++){ 21 if(j>=(i-u-1)){ 22 f[i][j]=max(f[i][j],f[u][j-(i-u-1)]+w[a[u]][a[i]]); 23 } 24 } 25 } 26 } 27 int res=0; 28 for(int i=0;i<=m;i++){ 29 for(int j=0;j<=k;j++){ 30 res=max(f[i][j],res); 31 } 32 } 33 cout<<res; 34 return 0; 35 }