AI作曲题解

一个简单的dp
我们可以分类:

  1. a[i]a[i - 1] 都知道的时候,直接累加计算即可。
  2. a[i] 已知, a[i - 1]未知时:dp[i][j]=max(dp[i][j],dp[i-1][k]+ms[k][j]);
  3. a[i] 未知, a[i - 1]已知时:dp[i][j]=max(dp[i][j],dp[i-1][a[i-1]]+ms[a[i-1]][j]);
  4. a[i]a[i - 1] 都未知时 : 那么dp[i][a[i]]=max(dp[i][a[i],dp[i-1][k]+ms[k][a[i]]);

代码按照以上思路写即可