可被三整除的最大和「变题」

1262. 可被三整除的最大和

 

其实这是一个 0-1 背包问题,关于「0-1 背包」可见 经典动态规划:0-1 背包问题

对于每个数,都有两种选择:选择它 or 不选它

先给出dp[i][j]的定义:对于前i个数,当前余数为j,这种情况下背包最大和就是dp[i][j]

这里需要强调一下:假设选择某个数,记为a,其余数记为x = n % 3,那么前一状态就是dp[i - 1][(j - x + 3) % 3]

变题:可被 k 整除的最大和

不说废话,直接给出通解: