gpt4 book ai didi

c++ - 新砖乱序

转载 作者:行者123 更新时间:2023-11-28 07:45:02 26 4
gpt4 key购买 nike

你有 n block 砖在 table 上排成一行。他们每个人都有一个字母。你的任务是重新排列这些砖 block ,让它们上面的字母创建一些特定的铭文。重新排列时,您只能交换具有指定字母的相邻砖 block (给定 m 对 (a1,b1),...,(am,bm) 并且您只能交换其中一个上带有 ai 的砖 block ,其中一个上带有 bi其次,对于某些 i=1,..,m)。您应该检查是否有可能完成此操作 - 如果可以 - 计算所需的最小交换次数。

输入

输入的第一行有一个整数c。然后是c个测试用例:每一个由两行长度不超过100000的小写字母(a..z)组成(起止配置说明),下一行一个整数m,然后m行两个字母ai,bi 在他们每个人中。

输出

对于每个测试用例,如果不可能重新排列积木或最小交换次数(如果可能,则输出此值模 232),则应打印 -1。

  Input:
4
ab
ba
0
abc
cba
3
ab
cb
ca
cabbbc
cbabbc
1
ab
abba
baab
1
ab

Output:
-1
3
1
2

我不明白这个问题,任何人都可以帮助我理解测试用例,无需指导我给出提示和算法,只需解释我的问题,thanx

最佳答案

你有 4 个测试用例。

Case 1:
start config: `ab`
end config: `ba`
allowed adjacent swaps: none
result: -1 - without any allowed swap, you can't get from `ab` to `ba`

Case 2:
start config: `abc`
end config: `cba`
allowed adjacent swaps: `(ab)`,`(cb)`,`(ca)`
result: 3
example solution: `abc -> (cb)@(1,2) -> acb -> (ca)@(0,1) -> cab -> (ab)@(1,2) -> cba`

Case 3:
start config: `cabbbc`
end config: `cbabbc`
allowed adjacent swaps: `(ab)`
result: 3
example solution: `cabbbc -> (ab)@(1,2) -> cabbbc`


Case 4:
start config: `abba`
end config: `baab`
allowed adjacent swaps: `(ab)`
result: 2
example solution: `abba -> (ab)@(2,3) -> abab -> (ab)@(0,1) -> baab`

关于c++ - 新砖乱序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15056926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com