摘要: 題目大意:從n根筷子當中選取j對,其中一對筷子包含三根,并且要求第三跟不短語前兩根。要求取出的筷子長度差(前兩根的長度差)的平方的和最小。
num[i] 表示第i+1個筷子與第i個筷子長度差的平方~
開始從前面往后推,漏洞百出:dp[i][j]表示從1……i個筷子中選取j對,
dp[i][j] = MIN(dp[i-1][j],dp[i-3][j-1] + num[i-2]);
問題在哪? 第i個筷子能用,
一種情況:第i-1個筷子能與第i-2個筷子配對了(來了第三根筷子i);
二種情況:影響1……i-1個筷子中取j對筷子的配對情況。WHY?think about~
最后從后往前推:dp[i][j]表示從i……n個筷子中選取j對,
dp[i][j] = MIN(dp[i+1][j],dp[i+2][j-1] + num[i]);
沒問題了吧~ 第i個筷子取,則必與第i+1個筷子配對,不取則可以忽略它(就因為它是當前最短的)
閱讀全文