Uva 4394 字串刷子

2022-04-01 07:02:01 字數 1001 閱讀 4968

題意:乙個字串刷子,每次可以將一段連續的字串變成一種顏色,給兩個字串,最少通過幾次可以將第乙個字串轉換為第二個字串;

分析:首先假設第乙個字串和第二個字串全部不相同,那麼怎麼刷成第二個字串?

dp[i][j] 就是將完全不同的字串刷成第二個的最少步數,可以這樣考慮,當中間乙個字串和首字串相同,

可能這樣刷兩次會比較好,當然這兩個狀態已經算出來了;

回到原題;

當兩個字串兩個位置相同 ans[i] = ans[i-1] ,這個字串可以不用刷;

不同,最壞情況就是 dp[1][i];同理,也可以找出兩個部分來有可能更優;

1 #include 2

3using

namespace

std;45

const

int maxn = 100 + 5;6

char

str1[maxn];

7char

str2[maxn];

8int

dp[maxn][maxn];

9int

ans[maxn];

1011

intmain()

1230}31

}3233 memset(ans,0,sizeof

(ans));

3435

if(str1[1] == str2[1

])36 ans[1] = 0;37

else ans[1] = 1;38

for(int i=2;i<=len;i++) 47}

48}49 printf("

%d\n

",ans[len]);

5051}52

return0;

53 }

view code

UVa 232 字串處理

背景 做了三個半小時,能力堪憂啊,各種除錯,各種出錯,要分析一下,這些錯點盡量不能再錯。學習 1.對於字串陣列,要把每一行都開大一位,該位用來存放 0 否則將會出現未知輸出。也就是說 字串二維陣列的每一行都可以看做乙個字元陣列,結尾都有乙個 0 printf在用 s 格式符輸出字串,總是從給定的首位...

uva11552 字串重排

字串從左到右每k個為一組 保證字串長度是k的倍數 組內字串可以任意移動位置,組間順序不能變換。求變換後最少的塊數。塊的定義 連續相等的字串為乙個快 每一組為乙個單位,因此dp時需要加入組作為一維,又發現計算加入新組後塊的增量,需要知道上一組中最後乙個字元是什麼,因此狀態設計為 dp i j 前i組中...

uva8183(字串處理)

bool vow char ch 是否是母音 void solve vector vec,char ss 將每句話分解為單詞,緊跟在單詞後的標點符號和單詞合併 int judge string s 返回乙個單詞的音節數 if flag s i y s i y 注意y的處理,如果此處的y符合此條件,後...