首页 > 学院 > 开发设计 > 正文

神奇的幻方

2019-11-08 02:45:22
字体:
来源:转载
供稿:网友

神奇的幻方

学长说要把博客当错题本,好吧,今天确实考试了,QAQ…

考的NOip2015Day1的题,还比较简单,模拟就可以满分。对他们一定是拼手速的题吧。。。

自己写的代码片如下:

#include<iostream>#include<cstdio>using namespace std;int N,k;int a[100][100];int b[3000][3];int main(){ freopen("magic.in","r",stdin); freopen("magic.out","w",stdout); k=1; scanf("%d",&N); if(N==1) PRintf("1"); else{ a[1][N/2+1]=k; ++k; b[1][1]=1;b[1][2]=N/2+1; while(k<=N*N) { if(b[k-1][1]==1&&b[k-1][2]!=N) { a[N][b[k-1][2]+1]=k; b[k][1]=N; b[k][2]=b[k-1][2]+1; ++k; } else if(b[k-1][1]!=1&&b[k-1][2]==N) { a[b[k-1][1]-1][1]=k; b[k][1]=b[k-1][1]-1; b[k][2]=1; ++k; } else if(b[k-1][1]==1&&b[k-1][2]==N) { a[b[k-1][1]+1][b[k-1][2]]=k; b[k][1]=b[k-1][1]+1; b[k][2]=b[k-1][2]; ++k; } else if(b[k-1][1]!=1&&b[k-1][2]!=N) { if(a[b[k-1][1]-1][b[k-1][2]+1]==0) { a[b[k-1][1]-1][b[k-1][2]+1]=k; b[k][1]=b[k-1][1]-1; b[k][2]=b[k-1][2]+1; ++k; } else { a[b[k-1][1]+1][b[k-1][2]]=k; b[k][1]=b[k-1][1]+1; b[k][2]=b[k-1][2]; ++k; } } } for(int i=1;i<=N;++i) { for(int j=1;j<=N;++j) printf("%d ",a[i][j]); printf("/n"); } } fclose(stdin); fclose(stdout); return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表