连环按钮
测试数据来自 system/1284
作业已超过截止时间,您无法递交本题目。
时间限制:1秒 内存限制:256M
【题目描述】
有一种特殊的二进制连环按钮,由\(n\)个相连的按钮组成,按钮有凹/凸两种状态,用手按按钮会改变其状态。
然而让人头疼的是,当你按一个按钮时,跟它相邻的两个按钮状态也会反转。当然,如果你按的是最左或者最右边的按钮,该按钮只会影响到跟它相邻的一个按钮。
当前连环按钮状态已知,需要解决的问题是,你至少需要按多少次按钮,才能将连环按钮转变为所期望的目标状态。
【输入格式】
第 1 行是正整数 \(T\),表示有 \(T\) 组数据。每组数据占两行,是两个由 0、1 组成的等长字符串,第 1 个的字符表示当前连环按钮的状态,第 2 个字符串表示目标连环按钮状态,其中 0 代表凹,1 代表凸。
【输出格式】
对于每组数据,输出至少需要进行的按按钮操作次数,如果无法实现转变,则输出“impossible”。
【输入输出样例】
Input
3
011
000
00000
01100
11110010
00011011
Output
1
impossible
3
【输入输出样例】
第1组数据,只需按下第三个按钮,就可实现01 1 => 000;
第2组数据,无论怎么按都无法有达到目标状态;
第3组数据,需要按三次,下面是其中的一种方案(红色数字表示每次按下的按钮):
1 1 110010 ==> 00010 0 10 ==> 000111 0 0 ==> 00011011;
【数据限制】
\(100\%\) 的数据,满足 \(T<=10\),连环按钮状态的0/1字符串的长度不超过 30。
【来源】
Mr.he