This puzzle consists of a random sequence of m black disks and n white disks on an oval-shaped track, with a turnstile capable of flipping (i.e., reversing) three consecutive disks. In Figure 1, there are 8 black disks and 10 white disks on the track. You may spin the turnstile to flip the three disks in it or shift one position clockwise for each of the disks on the track (Figure 1).

Figure 1. A flip and a shift
The goal of this puzzle is to gather the disks of the same color in adjacent positions using flips and shifts. (Figure 2)

Figure 2. A goal sequence
You are to write a program which decides whether a given sequence can reach a goal or not. If a goal is reachable, then write a message ��YES��; otherwise, write a message ��NO��.
Input
The input consists of T test cases. The number of test cases ) (T is given in the first line of the input. Each of the next T lines gives a test case. A test case consists of an integer, representing the sum of m and n, and a sequence of m+n 0s and 1s, representing an initial sequence. A 0 denotes a white disk and a 1 denotes a black disk. The sum of m and n is at least 10 and does not exceed 30. There is a space between numbers.
Output
The output should print either ��YES�� or ��NO�� for each test case, one per line.
Sample Input
2
18 0 0 1 0 1 1 1 1 0 1 0 0 1 0 0 0 0 1
14 1 1 0 0 1 1 1 0 0 1 1 0 1 0
Output for the Sample Input
YES
NO
比较通用的解决方案:
另一种方法:
本文介绍了一种磁盘翻转谜题的解决算法,该谜题要求通过翻转和移动磁盘来使相同颜色的磁盘相邻。文中提供了两种算法实现方案,一种基于黑白磁盘数量的奇偶性判断,另一种则通过交换操作实现目标状态。
2080

被折叠的 条评论
为什么被折叠?



