1-4 金币阵列问题
问题描述
有m*n枚金币在桌面上排列成一个m行n列的金币阵列。每一枚金币或正面朝上,或背面朝上。用数字表示金币状态,0表示正面朝上,1表示背面朝上。
金币阵列游戏的规则是:
(1)每次将任一行金币翻过来放在原来的位置上。
(2)每次可以任选2列,交换这2列金币的位置。
任务:给定金币的初始状态和目标状态,编程计算按金币游戏规则,将金币排列从初始状态变换到目标状态所需的最少变换次数。
Java
public class Main {
//case 1
private static int[][] source = {
{
1, 0, 1}, {
0, 0, 0}, {
1, 1, 0}, {
1, 0, 1}};
private static int[][] target = {
{
1, 0, 1}, {
1, 1, 1}, {
0, 1, 1}, {
1, 0,