魔方阵定义:
魔方阵是指每一行、每一列、对角线之和都为一个定值,比如3*3矩阵为:
8 1 6
3 5 7
4 9 2
其规律为:
- 下一个值在当前值的上一行的后一列
- 若当前值所在的行为第一行,则下一个值在最后一行的下一列
- 若当前值所在的列为最后一列,则下一个值在上一行的第一列
- 若下一个要存放的位置已经有值了,则下一个值则放在当前值当前列的下一行
代码:
#include<stdio.h> #define N 3 int main(){ int mfz[N][N]={0};//置零 int i,j,x=0,y=N/2,count=1; while(count<=N*N){ mfz[x][y]=count; i=x,j=y; if(i==0)i=N-1;//判断是否为第一行 else i--; if(j==N-1)j=0;//判断是否为最后一列 else j++; if(mfz[i][j]!=0){//判断要插入的位置是否有值 i=x+1; j=y; } x=i,y=j; count++; } for(i=0;i<N;i++){ for(j=0;j<N;j++) printf("%d\t",mfz[i][j]); printf("\n\n"); } } /* 输出: 8 1 6 3 5 7 4 9 2 */
复制
2021-9-6更新:
算法应用(不)
原神海衹岛石柱解密:
按照地图方向,上北下南,色块方位对应的数字:北为1,东为2,南为3,西为4
头顶有方块的石柱需要在方位数字的基础上+4
按照魔方阵的排列为:
4 3 8
9 5 1
2 7 6
能在游戏里面碰到算法问题也算是比较新鲜的了![]()
biubiu~~~赞一个