<<问题描述:
给定的2个4*4方格阵列组成的图形A和B,每个方格的颜色为黑色或白色。方格阵列中有公共边的方格称为相邻方格。图形变换问题的每一步变化可以交换相邻方格的颜色。试设计一个算法,计算最少需要多少步变换,才能将图形A变换为图形B
<<编程任务:
对于给定的2个方格阵列,编程计算将图形A变换为图形B的最少变换次数。
<<数据输入:
由文件input.txt 给出输入数据。前4行是图形A的方格阵列,后四行是图形B的方格阵列。0表示白色,1表示黑色。
<<结果输出:
将计算出的最小变换次数和相应的变换序列输出到文件output.txt。第一行是最小变换次数。从第二行开始,每行用4个数表示一次变换,例如,1112表示交换方格(1,1)和(1,2)的颜色。问题无解时输出“No solution!”








图形A
图形B输入文件示例
Input.txt
1010
0100
0010
1010
0110
0001
0010
1010
输出文件示例
output
3
1112
2223
2324
 用C++ C  JAVA 都可以,很急,谢谢各位大虾啊~~~~~~~

解决方案 »

  1.   

    4*4方格阵列这个?LZ想做俄罗斯方块
      

  2.   

    这个求多少步一看就麻烦,汗那。。我踩一脚,等最终答案
      

  3.   

    看起来像是学校的课程设计 这个算法有点恼火了  每次交换一个 这个算法是不是要用那个走棋子那个算法 忘记叫什么了 
      

  4.   

    哪位大虾啊,帮帮忙啊,我们很急啊............谢谢...................
      

  5.   

    把A与B比较  记录下重叠部分  将不重叠部分依次移动就可以了(我想当然的,别当真)
      

  6.   

    这个办法总体可行.
    重叠的点设为固定点.
    对于不重叠的点,设其为移动点,可以挨个的找与其最近的移动点,移过来.
    最近的点就是|行1-行2|+|列1-列二|最小的点.移动时路过固定点时,正在移动的点代替固定点,成为固定点,让固定点变为移动点继续前进.移到位后,移动点变为固定点.
      

  7.   

    想知道怎么用分支界限法来解决这个问题?