1. 求最大公约数的辅助函数 gcd(a, b) : - 使用辗转相除法来计算两个数的最大公约数。通过不断地将较大数变为较小数,较小数变为两数相除的余数,直到余数为 0,此时较大数就是最大公约数。 2. 计算最大得分的函数 max_score(nums, k) : - 首先确定问题的规模和状态表示: -  n 表示输入序列 nums 的长度。 - 创建一个二维列表 dp ,其中 dp[i][j] 表示前 i 个元素分成 j 个部分的最大得分。 - 然后进行状态转移: - 对于每个 i 从 1 到 n (遍历整个序列): - 对于每个 j 从 1 到 min(i, k) (确保部分数不超过元素个数且不超过给定的要分成的部分数 k ): - 通过遍历不同的分割点 l 从 j - 1 到 i (确定当前部分的边界),计算当前状态 dp[i][j] 。 - 计算方式是取当前状态和前 l 个元素分成 j - 1 个部分的得分加上从 l 到 i 这部分的最大公约数中的较大值。这里的最大公约数通过调用 gcd(*nums[l:i]) 来计算,表示从 l 到 i 这个子序列中所有元素的最大公约数。 - 最后返回结果: -  dp[n][k] 即为前 n 个元素分成 k 个部分的最大得分。