[模拟]神奇的幻方

神奇的幻方在这里插入图片描述

解析
这是一道很水的水题,方法和条件都给了出来。直接暴力模拟。

代码

#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
int n,a[50][50];
int main(){
	scanf("%d",&n);
	int x,y;
	x=1;
	y=n/2+1;
	a[x][y]=1;
	for(int i=2;i<=n*n;i++){
   		if(x==1&&y!=n){  //判断是不是满足第一个条件
   			x=n;
    		y++;
   			a[x][y]=i;
    		continue;  //执行完之后,跳到下一次循环。避免会重复执行下面的语句
    	}
   		if(x!=1&&y==n){ //判断是不是满足第二个条件
    		x--;
    		y=1;
    		a[x][y]=i;
    		continue; //同上
    	}
    	if(x==1&&y==n){ //判断是不是满足第三个条件
        	x++;
        	a[x][y]=i;
        	continue; //同上
    	}
    	if(x!=1&&y!=n){ //判断是不是满足第四个条件
        	if(a[x-1][y+1]==0){ //判断第右上角是不是没有填数
        		x--;
        		y++;
        	}
        	else{ //如果填了,就填在他的正下方
        		x++;
       	 	}
        	a[x][y]=i;
        	continue; //同上
    	}
	}
	for(int i=1;i<=n;i++){
    	for(int j=1;j<=n;j++){
      		printf("%d ",a[i][j]);
    	}
    	printf("
"); //记得要换行
	} 
	return 0;
}
原文地址:https://www.cnblogs.com/luojunhang/p/12300166.html