dp[j][k]用于表示j到k的闭区间,然后逆向扩展区间,从最后一次取数一直扩展到第一次取数。第一次取数的位置一定为最左或最右,即dp[1][n]=max(dp[2][n]+取数,dp[1][n-1]+取数)。问题得到解决。 #include <bits/stdc++.h> using namespace std; #define ll long long ll dp[1050][1050]; ll a[1050]; ll b[1050]; int main() { int t; scanf("%d",&t); while(t--) { memset(dp,0,sizeof...