#3769. [USACO16OPEN] Broken Cow Figurine B
[USACO16OPEN] Broken Cow Figurine B
题目描述
农夫约翰想为家中添置装饰,在瓷器店发现了一个精致的玻璃牛雕像。这个雕像可以用N×N的字符网格表示(3 ≤ N ≤ 8),其中'#'表示雕像部分,'.'表示空白。
不幸的是,一头公牛冲进商店打碎了约翰的雕像,使其断裂成2块,并混在了地上的K个碎片中(3 ≤ K ≤ 10)。每个碎片也用N×N网格表示。
请帮助约翰找出哪两个碎片可以拼回原来的雕像。注意:
- 碎片未被旋转或翻转,只需平移(上下左右移动)
- 两个碎片平移后叠加必须精确重构原雕像
- 每个'#'必须来自其中一个碎片,不能重叠
- 移动时整个碎片必须保持在原N×N网格范围内
输入格式
第一行:N和K
接下来N行:原雕像的网格
随后K×N行:K个碎片的网格(每个碎片占N行)
输出格式
一行两个整数,表示组成原雕像的两个碎片编号(按升序排列)
输入输出样例
输入 #1
4 3
####
#..#
#.##
....
.#..
.#..
##..
....
####
##..
#..#
####
....
.###
.#..
.#..
输出 #1
1 3
样例解释
原雕像:
####
#..#
#.##
....
三个碎片:
- 碎片1:
.#..
.#..
##..
....
- 碎片2:
####
##..
#..#
####
- 碎片3:
....
.###
.#..
.#..
碎片1和3可以组合成原雕像:
- 碎片1右移1格,下移0格
- 碎片3左移1格,上移1格 组合后完全匹配原雕像形状