游游拿到了一个2行2列的01矩阵,她每次操作可以交换的相邻两个元素(同一行或者同一列均为相邻)。游游想知道至少要多少次操作可以使得矩阵变成矩阵? 共有组询问。
区块链毕设网qklbishe.com为您提供问题的解答
游游拿到了一个2行2列的01矩阵,她每次操作可以交换的相邻两个元素(同一行或者同一列均为相邻)。游游想知道至少要多少次操作可以使得矩阵变成矩阵?
共有组询问。
BFS就可以,数据规模很小,最多需要访问24次。
from collections import deque def minOperation(cur: list, target: list): def flattern(l: list): return tuple(l[0] + l[1]) tar = flattern(target) visited = set() visited.add(flattern(cur)) x = deque() x.append(flattern(cur)) cnt = 0 while len(x): length = len(x) for _ in range(length): a, b, c, d = x.popleft() if (a, b, c, d) == tar: return cnt for nxt in [(b, a, c, d), (a, b, d, c), (c, b, a, d), (a, d, c, b)]: if nxt not in visited: visited.add(nxt) x.append(nxt) cnt += 1 return -1 t = int(input()) for _ in range(t): cur = [list(map(int, input().split())), list(map(int, input().split()))] target = [list(map(int, input().split())), list(map(int, input().split()))] print(minOperation(cur, target))
37:49
以上就是关于问题游游拿到了一个2行2列的01矩阵,她每次操作可以交换的相邻两个元素(同一行或者同一列均为相邻)。游游想知道至少要多少次操作可以使得矩阵变成矩阵?
共有组询问。的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训