请问这道程序设计基础题的思路

请问这道程序设计基础题的思路

问题描述:

学校程序设计基础的一道问题,有无专家能够告知一下解题思路?
img
感觉大概是用动态规划去做,但是状态&状态转移之类的一直想不好。

你可以参考一下这篇文章:https://www.cnblogs.com/pengchengwanli/p/5325051.html

我的思路是,数组各个元素的位置记录好,然后新建一个数组再进行从大到小的排序,把最大的那些一个一个相加,相加之前,先检查他的邻居是不是已经相加过,如果是则不加。