关闭

2015 NOIP day1 t1 神奇的幻方 (简单模拟)

641人阅读 评论(0) 收藏 举报
分类:

题目链接
题意:略
解答:直接模拟

#include<cstdio>
#include<algorithm>
using namespace std;
#define LL long long
#define pb push_back
#define X first
#define Y second
#define cl(a,b) memset(a,b,sizeof(a))
typedef pair<int,int> P;
const int maxn=100005;
const LL inf=1<<27;
const LL mod=1e9+7;
int a[40][40];
int n;
void getXY(int k,int&x,int&y){
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(a[i][j]==k){
                x=i;y=j;return ;
            }
        }
    }
}
/**
8 1 6
3 5 7
4 9 2
**/
int main(){
    scanf("%d",&n);
    a[1][(n+1)/2]=1;
    for(int k=2;k<=n*n;k++){
        int x,y;
        getXY(k-1,x,y);
        if(x==1&&y!=n){
            a[n][y+1]=k;
        }
        else if(y==n&&x!=1){
            a[x-1][1]=k;
        }
        else if(x==1&&y==n){
            a[x+1][y]=k;
        }
        else if(x!=1&&y!=n){
            if(a[x+-1][y+1]==0){
                a[x-1][y+1]=k;
            }
            else {
                a[x+1][y]=k;
            }
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            printf("%d%c",a[i][j],j==n?'\n':' ');
        }
        //printf("\n");
    }
    return 0;
}
0
0
查看评论

NOIP2015 神奇的幻方 解题报告(水题模拟)

在线评测: http://codevs.cn/problem/4510/ 整体思路: 枚举一的位置,然后模拟就行了 失误之处: 数据<39,然后,我就把记录上一个点的数组开到了39,orz,,然后只过了4个点,分明是39*39好么,,, 体会心得: 空间辣么...
  • qq_35772697
  • qq_35772697
  • 2016-08-27 13:43
  • 966

Noip2015提高组Day1 “神奇的幻方”题解

(第一次用博客写题解:]) Noip2015提高组Day1第一题    神奇的幻方 描述 幻方是一种很神奇的 N ∗ N 矩阵:它由数字 1,2,3, … … , N ∗ N 构成,且每行、每列及两条对角线上的数字之和都相同。 当 N 为奇数时,我们可以通过以下方法构建一...
  • qq_29992105
  • qq_29992105
  • 2016-08-28 22:36
  • 455

神奇的幻方 noip2015day1 T1

题目描述 Description 幻方是一种很神奇的N∗N矩阵:它由数字 1,2,3, … … ,N∗N构成,且每行、每列及两条对角线上的数字之和都相同。当N为奇数时,我们可以通过以下方法构建一个幻方:首先将 1写在第一行的中间。之后,按如下方式从小到大依次填写每个数(K= 2,3, … ,N∗N...
  • WhiStLenA
  • WhiStLenA
  • 2016-07-27 10:02
  • 976

NOIP2015 提高组 复赛 day1 magic 神奇的幻方

NOIP2015 提高组 复赛 day1 magic 神奇的幻方 1.题目第一遍读下来,不知所云。马上翻出输入输出样例,将题目再读一遍,发现了“从小到大依次填写每个数K”。 2.根据题意,对样例1进行手动模拟,很快获得成功,发现该题逻辑比较简单,就是二维数组+if else语句。 3.按题意开始编码...
  • mrcrack
  • mrcrack
  • 2016-12-30 10:48
  • 297

【NOIP 2015】 D1 T1 神奇的幻方

模拟
  • shm20000412
  • shm20000412
  • 2016-08-19 22:46
  • 197

NOIP 2015 提高组 Day1 T1 神奇的幻方

#include #include #include #include #include #include #include #include #include #include #include using namespace std; int x; int y; int p; int N; ...
  • Angel_wing_SKY
  • Angel_wing_SKY
  • 2016-11-09 15:56
  • 179

NOIP2015提高组Day1斗地主

题目分析仔细看,这道题着实想不到什么优美的算法,那么基本确定方向——dfs。 先分析,这题的花色是没用的 我们再分析,会发现这题的出牌顺序是不影响答案的 那么我们便可以先出牌多的(因为这样答案便会先便小,那么便可以方便后面的剪枝) 也就是我们先打顺子再打带牌! 顺子是没有什么技巧的,便直接...
  • xieguofu2014
  • xieguofu2014
  • 2015-12-06 10:54
  • 4352

洛谷 P2615 [NOIP2015 D1T1] 神奇的幻方

模拟
  • SenyeLicone
  • SenyeLicone
  • 2016-07-16 23:26
  • 1087

[NOIP2015]神奇的幻方

直接模拟即可#include #include #include #include using namespace std; int n; int tot=0; int s[100][100]; void create() { while(tot<n*n) {++tot; ...
  • holyromanempire
  • holyromanempire
  • 2016-11-17 08:26
  • 323

【NOIP 2015】神奇的幻方

day1 t1 基本的模拟法,还是要养成良好的书写习惯啊,一步步按着题目写即可 Tips: 1. x,y,列,行的操作。还是要仔细读题干里的操作方法,一不小心就出错了 2.变量的定义域 #include #include using namespace std; in...
  • AlphaRui
  • AlphaRui
  • 2017-10-21 12:20
  • 41
    个人资料
    • 访问:205698次
    • 积分:7043
    • 等级:
    • 排名:第3878名
    • 原创:522篇
    • 转载:3篇
    • 译文:0篇
    • 评论:12条
    文章分类
    最新评论