有两块木头。两者都由笔直的身体和身体下方的一些额外的块组成。在(0索引)位置0、4、7、9、10处有额外块的示例块:
XXXXXXXXXXX
X X X XX
该片段可以表示为01
二进制序列,第i
th个字符显示在第i
th个位置是否有块。上面的示例可以表示为10001001011
。
我们可以通过垂直翻转第二个(或者也可以水平翻转)来将它们组合在一起。翻转后,我们可以找到一个对齐,可以将两部分放在一起以使其高度为3。
Two example pieces:
XXXXXXXXXXX XXXXXXXX
X X X XX XXX
Second piece flipped vertically and horizontally:
XXXXXXXXXXX
X X X XX
XXX
XXXXXXXX
Pieces put together:
XXXXXXXXXXX
XXXXX X XX
XXXXXXXX
该示例的总宽度为12个块。
您应该编写一个程序或函数,该程序或函数接收两个字符串作为代表两个片段的输入,并输出一个高度为3 的最小可实现宽度的整数。
输入值
- 两个字符串,由字符
0
和组成1
。 - 两个字符串均包含至少一个字符。
- 您可以选择将两个字符串作为一个字符串并由一个空格连接在一起。
输出量
- 一个正整数,可以达到的最小总宽度。
例子
0 0 => 1
1 0 => 1
1 1 => 2
11 111 => 5
010 0110 => 5
0010 111 => 5
00010 11011 => 6
01010 10101 => 5
1001 100001 => 6
1110001100001 1100100101 => 14
001101010000101 100010110000 => 16
0010110111100 001011010101001000000 => 21
0010110111100 001011010101001001100 => 28
100010100100111101 11100101100010100100000001 => 27
0010 10111 => 5
0100 10111 => 5
0010 11101 => 5
0100 11101 => 5
10111 0010 => 5
10111 0100 => 5
11101 0010 => 5
11101 0100 => 5
这是代码高尔夫球,因此最短的入场券获胜。
第一个示例中的棋子是否应该是该示例的第二部分中的棋子?如果是这样,那么其中之一是错误的。
—
mdc32
@ mdc32它们不是同一块,但为了避免混淆,更改了第一个。
—
randomra'5