动态规划:假设前n-1本的取书方案已经解决,单独考虑第n本的取舍,如果保留第n本增加了已知的不整齐度,则取掉第n本。 首先要按高度进行排序。 dp[i][j] //以i结尾,已取好j本书 初始化: dp[1][0]=0; for(i=2;i<=n;i++) dp[i][0]=dp[i-1][0]+Math.abs(w[i]-w[i-1]); 方程: dp[i][j]=min{dp[i-p-1][j-p]+abs(w[i]-w[i-p-1])},0<=p<=j,0<=j<=k ans=min(dp[n-i][k-i)]) ,0<=i<=k