首页 > 代码库 > 【模拟】神奇的幻方

【模拟】神奇的幻方

NOIP提高组D1T1,看了好多次了题了。但是一拖再拖,导致拖到今天才AC掉题目。

这种题目好像真的没有什么可以说的,就是细节问题。

首先数组必须初始化为0,其次的话要记得continue。

#include <iostream>using namespace std;int a[41][41],n;int main(){    std::ios::sync_with_stdio(false);    cin>>n;    int y= n/2+1,x=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(y==n && x!= 1 ){            --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;                a[x][y]=i;                continue;            }            else{                ++x;                a[x][y]=i;                continue;            }        }    }    for(int i = 1;i<=n;i++)        for(int j=1;j<=n;j++){            cout<<a[i][j];            if(j != n) cout<<" ";            else cout<<endl;        }        return 0;}

 

【模拟】神奇的幻方