zoukankan      html  css  js  c++  java
  • 神奇的幻方

    一开始感觉题面十分的复杂,但仔细看几遍题,不难发现其实我们只需要将下一个数放在其前一个数的右上方即可,若右上方的已经有数,则放在它的正下方即可。

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #define scy(x) freopen(x".in","r",stdin); freopen(x".out","w",stdout);
    using namespace std;
    inline int read(){
      int x=0,f=1;
      char ch=getchar();
      while(ch>'9'||ch<'0'){
        if(ch=='-') f=-1;
        ch=getchar();
      }
      while(ch>='0'&&ch<='9'){
        x=(x<<1)+(x<<3)+(ch^48);
        ch=getchar();
      }
      return x*f;
    }
    long long s[10001][10001];
    int n;
    int sum=1,i,j;
    int main(){
     // scy("in");
    	n=read();
    	i=1,j=n/2+1;
    
    	while(sum<=n*n){
    		s[i][j]=sum;
    
    		if(sum%n==0){	++i;
       	if(i==n+1) i=1;
      }else
    		--i,++j;
        if(i==0) i=n;
    		if(j==n+1) j=1;
         ++sum;
    	}
      	for(int i=1;i<=n;i++){
    		for(int j=1;j<=n;j++){
       printf("%lld ",s[i][j]);
     }
       printf("
    ");
    	}
    
        return 0;
    }
    
  • 相关阅读:
    HTTP权威指南笔记-1.概述
    C# 设计模式之工厂模式(一)
    C# 读取Excel内容
    C# 反射
    C# 分部类与分部方法
    图像处理
    mysql 使用问题?
    第一节mysql 安装
    软件包管理
    第四节基础篇
  • 原文地址:https://www.cnblogs.com/scy-fisheep/p/13803573.html
Copyright © 2011-2022 走看看