魔方阵定义:
魔方阵是指每一行、每一列、对角线之和都为一个定值,比如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~~~赞一个