Same String 相同的字串

2021-09-25 16:36:20 字數 1128 閱讀 3522

單點時限:2.0 sec

記憶體限制:512 mb

有兩個只由小寫字母組成的長度為n的字串s1,s2和m組字母對應關係,每一組關係由兩個字母c1和c2組成,代表c1可以直接變成c2,你需要判斷s1是否可以通過這m組關係轉換為s2。

第一行輸入乙個n(1≤n≤100),代表字串的長度。

第二行和第三行輸入兩個字串s1,s2。

第四行輸入乙個m(1≤m≤325),代表有m組關係。

接下來m行,第i行兩個字元ui,vi,代表ui可以直接變為vi。

如果s1可以通過這些m組關係轉化變為s2,輸出」yes」,否則輸出」no」。

input

6

aabbcc

cdbcad

4a c

c aa d

b c

output

yes
可以轉換多次,比如a可以轉換為b,而b可以轉換為c,則a可以轉換為c。

樣例一:aabbcc->cabbcc->cdbbcc->cdbccc->cdbcac->cdbcaa->cdbcad

題意:s1可以通過m組關係轉化變為s2,輸出yes。。。

ac**:

#include#include#includeusing namespace std;

char a[440],b[440];

int s[440][440]; ///標記

int main()

for(int k=0; kfor(int i=0; ifor(int j=0; jif(s[i][k]==1&&s[k][j]==1) ///經過轉換可以做到變換的也加1

s[i][j]=1;

int flag=1;

for(int i=0; i}

if(flag)printf("yes\n");

else printf("no\n");

return 0;

}

hihocoder 分隔相同字元

思路 列舉,貪心。在 合法 的前提下放置越排在前邊的字母越好。合法 a z 中沒有乙個字母的個數超過當前串剩餘長度的一半 偶數情況下 或長度的一半加1 奇數情況下 實現 1 include 2 include 3 include 4using namespace std 56 strings 7 i...

最大連續相同的字元

有乙個僅包含 a 和 b 兩種字元的字串s,長度為n,每次操作可以把乙個字元做一次轉換 把乙個 a 設定為 b 或者把乙個 b 置成 a 但是操作的次數有上限m,問在有限的運算元範圍內,能夠得到最大連續的相同字元的子串的長度是多少。輸入描述 第一行兩個整數 n m 1 m n 50000 第二行為長...

交換字元使得字串相同

有兩個長度相同的字串s1 和s2,且它們其中只含有字元 x 和 y 你需要通過 交換字元 的方式使這兩個字串相同。每次 交換字元 的時候,你都可以在兩個字串中各選乙個字元進行交換。交換只能發生在兩個不同的字串之間,絕對不能發生在同乙個字串內部。也就是說,我們可以交換s1 i 和s2 j 但不能交換s...