比赛的时候花了一个多小时,以做不做

分析:可观察:中间是(n*n+1)/2, 中间的上面是n*n,以下是1, 左边是n,右面是(n*n+1)-n,并且正对角线是最左上对到最右下端添加(+1)。另外一条对角线是最右上到最左下递减(-n) ,其它对角线也是这种规律。

难点:模拟的时候数据有点杂,非常easy搞错,要细心点。

心得:做题的时候要先确定思路是正确的,而且要履好思路之后在写程序。

代码:

#include <cstdio>
#include <cstring>
int s[25][25];
int n;
void leup(int x, int y){ //左上
int i;
i = 1;
while(i < x&&i < y){
s[x-i][y-i] = s[x-i+1][y-i+1]-1; ++i;
}
}
void rido(int x, int y){ //右下
int i = 1;
while(x+i<=n&&y+i<=n){
s[x+i][y+i] = s[x+i-1][y+i-1]+1; ++i;
}
}
void riup(int x, int y){//右上
int i = 1;
while(x-i>0&&y+i<=n){
s[x-i][y+i] = s[x-i+1][y+i-1]-n; ++i;
}
}
void ledo(int x, int y){//左下
int i = 1;
while(x+i<=n&&y-i>0){
s[x+i][y-i] = s[x+i-1][y-i+1]+n; ++i;
}
}
int main(){
int t;
scanf("%d", &t);
while(t --){
scanf("%d", &n);
int mid = n-n/2;
s[mid][mid] = (n*n+1)/2;
s[mid-1][mid] = n*n;
s[mid+1][mid] = 1;
s[mid][mid-1] = n;
s[mid][mid+1] = (n*n+1)-n;
leup(mid, mid);//对角线
ledo(mid, mid);
riup(mid, mid);
rido(mid, mid);
for(int i = 1; i < mid; ++i){ //垂直对角线上的点的线
//leup(mid, mid);
//ledo(mid, mid);
riup(mid-i, mid-i);
ledo(mid-i, mid-i);
ledo(mid+i, mid+i);
riup(mid+i, mid+i);
}
leup(mid, mid-1); //确定最接近对角线而且平行对角线的线
ledo(mid, mid-1);
rido(mid, mid+1);
riup(mid, mid+1); leup(mid-1, mid);
riup(mid-1, mid);
rido(mid+1, mid);
ledo(mid+1, mid); for(int i = 1; i < mid-1; ++i){ //垂直上面确定的线上的点的线
ledo(mid-i, mid-1-i);
riup(mid-1-i, mid-i);
ledo(mid+1+i, mid+i);
riup(mid+i-1, mid+i);
}
for(int i = 1; i <= n; ++ i){
for(int j = 1; j <= n; ++j){
printf("%4d", s[i][j]);
}
printf("\n");
}
}
return 0;
}

版权声明:本文博客原创文章。博客,未经同意,不得转载。

hdoj 2183 奇数阶魔方(II) 【模拟】+【法】的更多相关文章

  1. HDU 1998 奇数阶魔方【模拟填数/注意边界和细节】

    奇数阶魔方 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  2. 算法:九宫格问题--奇数阶魔方(Magic-Square)

    一.魔方介绍 魔方(这里是简称,也可以叫幻方.魔术矩阵,Magic Square)是 n×n 正方形网格(n 为每侧的单元数),里面每个单元格填充了不同的正整数 1, 2, 3, ... , n2,并 ...

  3. hdu 1998 奇数阶魔方(找规律+模拟)

    应该不算太水吧. 17  24   1   8  15   23   5   7  14  16    4   6  13  20  22   10  12  19  21   3   11  18 ...

  4. 杭电ACM 1998奇数阶魔方

    #include<stdio.h>#include <string.h>int main(){ int n,m; int a[40][40]={0}; scanf(" ...

  5. 任意阶魔方阵(幻方)的算法及C语言实现

    写于2012.10: 本来这是谭浩强那本<C程序设计(第四版)>的一道课后习题,刚开始做得时候去网上找最优的算法,结果发现奇数和双偶数(4的倍数)的情况下算法都比较简单,但是单偶数(2的倍 ...

  6. n阶魔方阵(奇数阵)的输出

    需求 要求输出1~n²的自然数构成的魔方阵. STEP 1 什么是魔方阵? 魔方阵,古代又称“纵横图”,是指组成元素为自然数1.2…n2的平方的n×n的方阵,其中每个元素值都不相等,且每行.每列以及主 ...

  7. 【C++小白成长撸】--(续)单偶数N阶魔方矩阵

    1 /*程序的版权和版本声明部分: **Copyright(c) 2016,电子科技大学本科生 **All rights reserved. **文件名:单偶数N阶魔方矩阵 **程序作用:单偶数N阶魔 ...

  8. Java 实现奇数阶幻方的构造

    一.设计的流程图如下所示 二.Java 语言的代码实现 package MagicSquare; //奇数幻方的实现 public class Magic_Odd { //n 为幻方的阶数 publi ...

  9. hdu1998 bjfu1272奇数阶幻方构造

    这题就是一个sb题,本来很水,硬是说得很含混.奇数阶幻方构造其实有好多方法,这题既不special judge,也不说清楚,以为这样能把水题变成难题似的,简直想骂出题人. /* * Author : ...

随机推荐

  1. mongoDB 查询附近的人的语句

    mongoDB 自带LBS查询附近的人 {"location":{ $nearSphere: { $geometry: { type : "Point", co ...

  2. pygame系列_draw游戏画图

    说到画图,pygame提供了一些很有用的方法进行draw画图. ''' pygame.draw.rect - draw a rectangle shape draw a rectangle shape ...

  3. ecshop加广告出现广告位的宽度值必须在1到1024之间的解决方法

    ecshop加广告出现广告位的宽度值必须在1到1024之间,这点是非常郁闷的,因为现在宽屏网站逐渐成为主流,越来越多的宽屏网站进入了我们的视线,比如京东啊,一号店啊. 但是ecshop的广告位却不能超 ...

  4. python学习笔记之九:模块和包

    Python的标准安装包括一组模块,称为标准库.这里介绍模块的工作方式,学习如何使用它们. 一. 模块 1.1 用import从外部模块获取函数并为自己的程序所用: >>> from ...

  5. PageRank算法MapReduce实现

    如果你现在需要计算网页的排名只有4一:数据如下面的: baidu 10.00 google,sina,nefu google 10.00 baidu sina 10.00 google nefu 10 ...

  6. 手把手教popupWindow从下往上,以达到流行效果

    效果如图所看到的,点击開始button,popWindow从下往上出来,再点击popWindow外面,popWindow又从上往下消失 能够看出来,上面的popupWindow是半透明的,后面我会细说 ...

  7. Robotium原则的实施源代码分析

    从前面的章节<Robotium源代码分析之Instrumentation进阶>中我们了解到了Robotium所基于的Instrumentation的一些进阶基础.比方它注入事件的原理等,但 ...

  8. Jenkins(两)

    官网:https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins 我的这篇文章不过简单的依据上文,介绍Jenkins提供了哪些功能.详细大家还是要 ...

  9. Tuxedo入门学�

    中间件介绍: 介于客户机和server之间的夹层,突破了传统的c/s架构,为构建大规模,高性能,分布式c/s应用程序提供了通信,事物,安全,容错等基础服务,屏蔽了底层应用细节,应用程序不必从底层开发, ...

  10. cocos2d-x适配多分辨率

    现在用的2d-x版本是2.1.1.现在的项目要求是iphone ,iphone Retina,ipad和ipad Retina都有各自的路径来存放各自需要的资源.在AppDelegate的 appli ...