·蒟蒻」神奇的的幻方
2016-11-17 15:51
155 查看
神奇的幻方
/* 1. 若(K-1) 在第一行但不在最后一列,则将K填在最后一行,(K-1) 所在列的右一列; 2. 若(K-1) 在最后一列但不在第一行,则将K填在第一列,(K-1) 所在行的上一行; 3. 若(K-1) 在第一行最后一列,则将K填在(K-1) 的正下方; 4. 若(K-1) 既不在第一行,也不在最后一列,如果(K-1) 的右上方还未填数,则将K填在(K-1)的右上方, 否则将K填在(K-1)的正下方。 */ #include<iostream> #include<cstdio> using namespace std; int n,a[ 40][ 40],x,y; void magic( ); int main( ){ //freopen( "magic.in","r",stdin); //freopen( "magic.out","w",stdout); magic( ); return 0; } void magic( ){ scanf( "%d",&n); int sum=n*n; x=1,y=n/2+1; a[ x][ y]=1; for( int i=2;i<=sum;i++){ if( x==1&&y!=n){ a[ n][ y+1]=i; x=n,y+=1; continue; } if( x!=1&&y==n){ a[ x-1][ 1]=i; x-=1,y=1; continue; } if( x==1&&y==n){ a[ x+1][ y]=i; x+=1; continue; } if( x!=1&&y!=n){ if( a[ x-1][ y+1]==0){ a[ x-1][ y+1]=i; x-=1,y+=1; } else{ a[ x+1][ y]=i; x+=1; } continue; } } for( int i=1;i<=n;i++){ for( int j=1;j<=n;j++){ printf( "%d ",a[ i][ j]); } printf( "\n"); } }
相关文章推荐
- Noip2015 Day1 T1 神奇的幻方
- NOIP2015提高组 神奇的幻方
- NOIP 2015 提高组 Day1 T1 神奇的幻方
- NOIP2015复赛提高组day1(A:神奇的幻方 B:信息传递 C:斗地主)
- NOIP 2015普及组复赛Day1 T1 == Codevs4510 神奇的幻方
- 洛谷——P2615 神奇的幻方 【Noip2015 day1t1】
- [NOIP2015] 神奇的幻方 D1 T1
- noip2015day1 T1神奇的幻方
- C++&Pascal&Java——NOIP2015提高组day1 t1——神奇的幻方
- NOIP2015Day1T1-神奇的幻方
- #145. 【NOIP2015】神奇的幻方
- 2015 NOIP day1 t1 神奇的幻方 模拟
- 2015 NOIP day1 t1 神奇的幻方 (简单模拟)
- 洛谷 P2615 神奇的幻方
- NOIP2015 神奇的幻方 解题报告(水题模拟)
- 神奇的幻方
- 【NOIP 2015】 D1 T1 神奇的幻方
- [noip2015tg] 神奇的幻方
- Noip 2015 D1T1 神奇的幻方
- NOIP2015 提高组 复赛 day1 magic 神奇的幻方