旋转数字,使其顺序排列

来源:百度知道 编辑:UC知道 时间:2024/06/08 04:22:02
放置n*n个从0到n*n-1的无序的数至n*n的格子中,一次可顺时针旋转2*2个正方形格子,一次旋转将被用被旋转的左上角位置记录,怎样把它按照从左到右,从上到下,按从小到大排列,并显示它的依次旋转的记录(2<=n<=10),限时1秒,谢谢各位啦
寻求较好的算法,c/c++/java实现均可,谢谢大家的帮忙咯

找到数字0,用以0为右下角数字的2*2格子进行旋转,使0不断向上,直至0到达整个格子左上角第一个2*2格子内(四个格子的坐标是:(0,0)、(0,1)、(1,0)、(1,1) ),然后把0调整到(0,0)格子内;
然后找到1,采用同样方法,不断向上旋转直至0到达整个格子左上角第二个2*2格子内(四个格子的坐标是:(0,1)、(0,2)、(1,1)、(1,2) ),然后把1调整到(0,1)格子内;
一次类推;
不是最好的方法,但是绝对可以实现