神奇的幻方
2017-02-18 20:01
232 查看
神奇的幻方
学长说要把博客当错题本,好吧,今天确实考试了,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 [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; }
相关文章推荐
- P2615 神奇的幻方
- 2015 NOIP day1 t1 神奇的幻方 (简单模拟)
- 洛谷-神奇的幻方-NOIP2015提高组复赛
- 二维数组练习22_神奇的幻方
- 22:神奇的幻方
- 【codevs 4510】神奇的幻方
- noip2015 提高组 day1t1 神奇的幻方
- [NOIP2015] 提高组 洛谷P2615 神奇的幻方
- 神奇的幻方
- 【NOIP】提高组2015 神奇的幻方
- 神奇的幻方
- 2015 NOIP day1 t1 神奇的幻方 模拟
- NOIP 2015普及组复赛Day1 T1 == Codevs4510 神奇的幻方
- NOIP 2015 提高组 Day1 T1 神奇的幻方
- NOIP2015复赛提高组day1(A:神奇的幻方 B:信息传递 C:斗地主)
- 洛谷——P2615 神奇的幻方 【Noip2015 day1t1】
- noip2015神奇的幻方
- 幻方是一种很神奇的N*N矩阵 问题 A: 神奇的幻方
- noip2015day1 T1神奇的幻方
- NOIP2015 提高组 复赛 day1 magic 神奇的幻方