模拟神奇的幻方
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟神奇的幻方相关的知识,希望对你有一定的参考价值。
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; }
以上是关于模拟神奇的幻方的主要内容,如果未能解决你的问题,请参考以下文章