我们可以记录头和尾再加一个卖了的零食数目,如果头超过尾就return 0. 如果遇到需要重复使用的数,(也就是不为零的d数组)就直接return d[tuo][wei]. 如果没有,就取卖头一个与最后一个的最大值,并记录下来. 代码也有注释,具体可以自己看. #include<bits/stdc++.h> using namespace std; int n,a[2001],d[2001][2001]; int dfs(int gong,int tuo,int wei) { if(tuo>…