dp[i][j]:前i个人中有j个人选数学的最大分数。 for(int i = 1; i <= 40; ++i) {     dp[i][0] = dp[i-1][0] + b[i];     for(int j = max(1, i-20); j <= min(i, 20); ++j) {         dp[i][j] = max(dp[i-1][j-1] + a[i], dp[i-1][j] + b[i])     } } dp[40][20]就是结果。