第一次发帖,看到有人赞我,莫名开心。 我在这里,简要说一下思路。 第一题,就是暴力,从字符串开头,扫,substr(i, length-1)只要是回文串,这时,只要把(0, i)追加到字符串末尾,就ok了,当然记得(0,i)翻转过来。 第二题,还是暴力啊,看见n那么小,就最多15,妥妥的dfs+剪枝,从0到n-1,每次碰到一个,要么给a,要么给b,要么扔掉。在dfs过程中,当a == b时,更新 cost 最小值。这里剪枝,主要是发现a和b差太多了,把剩下的都给他,都补不上来,那还搜个啥。 第三题,n有2000,emmm,暴力n^2没想出来,dp想出来了。   dp[j][0]表示,到第j个人,且j选择单独买,要的最少时间;   dp[j][1]表示,j选择和后面人一起买,最少时间;   dp[j][2]表示,j选择和前面人一起买,最少时间;   然后,这些状态,和dp[j-1, 0/1/2]或者dp[j-2, 0/1/2]有关系了。