演示** c++
問題描述:
給定乙個字串,求最少切幾次,可以都切成回文串
例如:對於字串「abaacca」,最少切割一次,就可以得到「aba」和「acca」這兩個回文子串
輸入 輸入的第一行是乙個整數 t (t <= 20) ,表示一共有 t 組資料。
接下來的 t 行,每一行都包含了乙個長度不超過的 1000 的字串,且字串只包含了小寫字母。 輸出 對於每組資料,輸出一行。該行包含乙個整數,表示阿福最少切割的次數,使得切割完得到的子串都是回文的。 樣例輸入
3abaacca
abcd
abcba
樣例輸出13
0提示 對於第一組樣例,最少切割 1 次,將原串切割為「aba」和「acca」兩個回文子串。
對於第二組樣例,最少切割 3 次,將原串切割為「a」、「b」、「c」、「d」這四個回文子串。
對於第三組樣例,不需要切割,原串本身就是乙個回文串。
思路
首先寫好判斷回文串的函式
dp[i]表示 從1到i 完全角成回文串需要切幾刀
從1為起點開始列舉 出口 dp[0],dp[1]求dp[len]
相當於斜著遍歷 如果i到j是回文串
從1到j 也就是i == 1時 需要切一刀2.需要綜合之前其他起點的情況 也就是dp[i]
= min(dp[i],dp[j-1]
);
題解
#include
#include
#include
using
namespace std;
char a[
100]
;int dp[
100]
;bool
check
(int left,
int right)
intmain()
for(
int i =
2;i<=len;i++)}
} cout <
}
動態規劃基礎題 機器分配
題目描述 總公司擁有高效裝置m臺,準備分給下屬的n個分公司。各分公司若獲得這些裝置,可以為國家提供一定的盈利。問 如何分配這m臺裝置才能使國家得到的盈利最大?求出最大盈利值。其中m 15,n 10。分配原則 每個公司有權獲得任意數目的裝置,但總台數不超過裝置數m。輸入輸出格式 輸入格式 第一行有兩個...
動態規劃基礎水題提綱
提綱 漢諾塔漢諾塔 漢諾塔 又稱河內塔 問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根 金剛石 柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙...
動態規劃2
動態規劃是研究一類最優化問題的方法,在經濟 工程技術 企業管理 工農業生產及軍事等領域中都有廣泛的應用。近年來,在acm icpc中,使用動態規劃 或部分應用動態規劃思維 求解的題不僅常見,而且形式也多種多樣。而在與此相近的各類資訊學競賽中,應用動態規劃解題已經成為一種趨勢,這和動態規劃的優勢不無關...