问题描述
- 关于4阶魔阵的写法,即16宫格
-
16宫格的做法是,1到16依次写进4阶方阵中,然后将位置(1,1)与位置(4,4)上的对换,(2,2)与(3,3)上的对换。再将(1,4)与(4,1)对换,(2,3)与(3,2)对换。
基于这种思想我给出了一个程序,但是好像没有输出正确的结果。
#includeint main() {
int A[4][4] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int i,j;
for (i = 0; i < 2; i++) {
*(&A[0][0] + i * 4 + (i - 1)) = *(&A[0][0] + (4 - i) * 4 + (4 - i));//斜率为-1的对角线上数,(1,1)位子与(4,4)位子互换,(2,2)与(3,3)互换
*(&A[0][0] + i * 4 + (4 - i)) = *(&A[0][0] + (4 - i) * 4 + i);//斜率为1的对角线上的数,(1,4)与(4,1)互换,(2,3)与(3,2)互换,其他不变
}
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++)
printf("%3d ", *(&A[0][0] + i * 4 + j));
printf("n");
}
return 0;
}
解决方案
http://www.douban.com/group/topic/28700682/
http://blog.csdn.net/cmutoo/article/details/5487157
时间: 2024-11-01 08:55:50