看了這個人寫的解題思路狀態轉移方程,這裡只是用**實現了下
問題:考慮在乙個印表機上整齊地列印一段文章的問題。輸入的正文是n個長度分別為l1、l2、……、ln(以字元個數度量)的單詞構成的序列。我們希望將這個段落在一些行上整齊地列印出來,每行至多m個字元。「整齊度」的標準如下:如果某一行包含從i到j的單詞(ii單詞的最優「整齊度」——空格的立方總和。開始時,令a[0]=0。a[i]的遞推式如下
w[k][i]代表將k到i的單詞寫入一行時,該行的多餘空格數的立方。
每次計算a[i]時,迴圈k從i-1開始,直到某個k值使得
最終a[n]即為所求的最小立方總和。
#include #include #include #include using namespace std;
const int maxn = 1010;
int dp[maxn], w[maxn][maxn];
int len[maxn]; //len[i] 表示第0個到第i個單詞的總長度
int main()
for(int i = 1; i <= n; i++)
}dp[0] = 0;
for(int i = 1; i <= n; i++)
}printf("%d\n", dp[n]);
return 0;
}
動態規劃 整齊列印
問題 考慮在乙個印表機上整齊地列印一段文章的問題。輸入的正文是n個長度分別為l1 l2 ln 以字元個數度量 的單詞構成的序列。我們希望將這個段落在一些行上整齊地列印出來,每行至多m個字元。整齊度 的標準如下 如果某一行包含從i到j的單詞 ii單詞的最優 整齊度 空格的立方總和。開始時,令a 0 0...
演算法導論 隨機演算法
一.概率分布 對於有些問題本身是屬於概率問題,如僱傭問題 對於此類問題,我們需要利用概率分析來得到演算法的執行時間,有時也用來分析其他的量。例如,僱傭問題中的費用問題也需要結合概率分析來計算得到。為了使用概率分析,我們必須使用或者假設已知關於輸入的概率分布,然後通過分析該演算法計算出平均情況下的執行...
《演算法導論》 演算法導論2 2 1插入排序
2.1 插入排序。我們分析的第乙個演算法是插入排序演算法,輸入 n個數 a1,a2,a3,a4,a5,a6,a7 an 輸出 序列的乙個排列 即重新排序 a1 a2 a3 使a1 a2 a3 插入排序演算法的偽 是以乙個過程的形式給出的,稱為insertion sort,它的引數是乙個陣列。包括了n...