#P1627. 【宽搜+状态压缩】硬币翻转
【宽搜+状态压缩】硬币翻转
Description
【问题描述】有一排n枚硬币,一开始均正面朝上,每一次操作,你可以将任意n-1枚硬币进行翻转,现请你用最少的操作,将这n枚硬币翻转到一个指定的状态。
【输入数据】
输入数据共两行。第一行为一个整数n(n<=12),表示硬币的数量。第二行为一个长度为n的字符串,表示指定的目标状态。字符串仅包含0和1两种符号,0表示正面朝上,1表示正面朝下。
【输出数据】
输出数据包含若干行。第一行包含一个正整数S,表示所需的最少操作数。下面的S行,每行一个长度为n的0/1字符串,表示每操作一次后硬币的状态。所有的输入数据保证至少存在一种方案。有多种方案时,输出第一步最小的方案。若还有多种方案,则输出第二步最小的方案,依次类推。
【输入样例】
4
1111
【输出样例】
4
0111
1100
0001
1111