問題 D 字串替換

2022-09-09 10:30:12 字數 1436 閱讀 7891

時間限制: 1 sec 記憶體限制: 128 mb

[狀態] [提交] [命題人:外部匯入]

題目描述

小明最近迷上了字串操作。對每個字串,小明每次可以執行以下兩種操作之一:

把字串中的某個字元改成任意乙個其他字元,花費1的代價。

交換字串中的兩個字元,花費0的代價。

小明發現,把乙個字串通過一系列的操作,可以轉換成任何乙個與之等長的字串。例如,把 「hello」變為「world」的一種代價為 3 的操作序列如下:

hello → wello (替換 h 為 w,代價為 1)

wello → wolle (交換 e 和 o,代價為 0)

wolle → worle (替換 l 為 r,代價為 1)

worle → world (替換 e 為 d,代價為 1)

小明發現,無法用少於 3 次的代價將「hello」變為「world」。 顯然,不同的轉換方案花費的代價是不同的,請程式設計幫助小明計算把乙個字串變為另乙個字元 串的最小代價。

本題中的字串根據給定的初始數值 s 按以下規則生成:

for i = 1, 2, … n

s ← (s × 345) mod 19997

第乙個字串的第 i 個字元的 ascii 碼為(97 + (s mod 26))

for i = 1, 2, … n

s ← (s × 345) mod 19997

第二個字串的第 i 個字元的 ascii 碼為(97 + (s mod 26))

輸入

正整數 n (字串長度), s (資料生成器的初始數值)。1 ≤ n ≤ 1,000,1 ≤ s ≤ 19,997。

輸出

將第乙個字串轉換為第二個字串的最少代價。

樣例輸入 copy

4 35

樣例輸出 copy

2提示

*在樣例 1 中,生成的字串是「lzvv」和「xylv」,將第乙個字串變為第二個的最小代價為 2。

上碼

#include 

#pragma gcc optimize(2)

using

namespace std;

intmain()

for(i=

1; i<=n; i++

)for

(i=1

; i<=n; i++

)for

(j=1

; j<=n; j++)if

(a[i]

==b[j]

)printf

("%d\n"

,n-sum)

;return0;

}

字串替換

描述輸入乙個字串,以回車結束 字串長度 100 該字串由若干個單詞組成,單詞之間用乙個空格隔開,所有單詞區分大小寫。現需要將其中的某個單詞替換成另乙個單詞,並輸出替換之後的字串。輸入輸入包括3行,第1行是包含多個單詞的字串 s,第2行是待替換的單詞a,長度 100 第3行是a將被替換的單詞b。長度 ...

字串替換

一 問題 函式宣告如下 char strreplace char str,char sub,char rep 其中str為原字串,sub為待被替換的子串。為簡單起見,假定字串sub和rep長度一樣 二 源 char strreplace char str,char sub,char rep if f...

字串替換

請你實現乙個簡單的字串替換函式。原串中需要替換的佔位符為 s 請按照引數列表的順序一一替換佔位符。若引數列表的字元數大於佔位符個數。則將剩下的引數字元新增到字串的結尾。給定乙個字串a,同時給定它的長度n及引數字元陣列arg,請返回替換後的字串。保證引數個數大於等於佔位符個數。保證原串由大小寫英文本母...