[模擬]神奇的幻方

神奇的幻方在這裏插入圖片描述

解析
這是一道很水的水題,方法和條件都給了出來。直接暴力模擬。

代碼

#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("\n"); //記得要換行
	} 
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章