应该不算太水吧。

17  24   1   8  15
  23   5   7  14  16
   4   6  13  20  22
  10  12  19  21   3
  11  18  25   2   9

对于上面的数据,根据题目中的提示,很容易就看到对角线上的数字是11、12、13、14、15。其他的数据,比如说2,从2往右上查就是2、3、4、5、1。描述起来好像很麻烦,但是对着图看一下就可以很容易看明白。

接下来继续观察数据,我们可以看出在第一行实际上是从1开始往右查每个数字逐个加上n+2,往左先是n*n-1,然后依次减去n+2。第一行和最后一行根据中心点对称的两个数字的和是n*n+1,比如说17+9=25+1,24+2=25+1。

有了这两个规律,仅凭直觉,我们都可以确定用来模拟出结果已经足够了。模拟的方法很多,我的方法是将1~n^2分成n段,用第一行的每个数字来确定它所在的斜边的最小值和最大值,比如说对于17,在16、17、18、19、20这个序列中,最小值就是17/5*5+1=16,最大值是(17+5)/5*5=20。有了这两个值,这一个序列的值就很容易确定了。

1A。

#include<stdio.h>
#include<string.h>
#define N 21
int map[N][N];
int main()
{
int n;
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
int x=n+1;
int y=x/2;
memset(map,0,sizeof(map));
map[1][y]=1;
map[n][y]=n*n;
int temp=n+2;
int i,j;
i=y-1;
j=y+1;
int tempx,tempy;
tempx=n*n-1;
tempy=1+temp;
while(i>=1&&j<=n)
{
map[1][i]=tempx;
i--;
tempx-=temp;
map[1][j]=tempy;
j++;
tempy+=temp;
}
temp=1+n*n;
for(i=1; i<=n; i++)
map[n][i]=temp-map[1][n+1-i];
int start,end;
int l,k;
for(j=1; j<n; j++)
{
start=map[1][j]/n*n+1;
end=(map[1][j]+n)/n*n;
for(l=2,k=j-1; l<=n&&k>0; l++,k--)
{
if(map[l-1][k+1]!=start)
map[l][k]=map[l-1][k+1]-1;
else
map[l][k]=end;
}
for(l=n-1,k=j+2; l>=1&&k<=n; l--,k++)
{
if(map[l+1][k-1]!=end)
map[l][k]=map[l+1][k-1]+1;
else
map[l][k]=start;
} }
for(l=2,k=n-1; l<=n&&k>=1; l++,k--)
{
map[l][k]=map[l-1][k+1]-1;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%4d",map[i][j]);
printf("\n");
}
}
return 0;
}

hdu 1998 奇数阶魔方(找规律+模拟)的更多相关文章

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

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

  2. hdoj 2183 奇数阶魔方(II) 【模拟】+【法】

    比赛的时候花了一个多小时,以做不做 分析:可观察:中间是(n*n+1)/2, 中间的上面是n*n,以下是1, 左边是n,右面是(n*n+1)-n,并且正对角线是最左上对到最右下端添加(+1).另外一条 ...

  3. 杭电ACM 1998奇数阶魔方

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

  4. HDU 3032 multi-sg 打表找规律

    普通NIM规则加上一条可以分解为两堆,标准的Multi-SG游戏 一般Multi-SG就是根据拓扑图计算SG函数,这题打表后还能发现规律 sg(1)=1 sg(2)=2 sg(3)=mex{0,1,2 ...

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

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

  6. 洛谷 P1014 Cantor表【蛇皮矩阵/找规律/模拟】

    题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … ...

  7. hdu 1030 Delta-wave(数学题+找规律)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1030 Delta-wave Time Limit: 2000/1000 MS (Java/Others ...

  8. HDU 5703 Desert 水题 找规律

    已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现是找规律的题了= =都是2的n-1次方,而且这 ...

  9. HDU 4910 Problem about GCD 找规律+大素数判断+分解因子

    Problem about GCD Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

随机推荐

  1. selenium之多线程启动grid分布式测试框架封装(四)

    九.工具类,启动所有远程服务的浏览器 在utils包中创建java类:LaunchAllRemoteBrowsers package com.lingfeng.utils; import java.n ...

  2. 删除Python UserWarning[已解决]

    在使用MySQLdb包后,导入测试时发现一个警告. /usr/lib/python2.6/site-packages/setuptools-0.8-py2.6.egg/pkg_resources.py ...

  3. Ora中select某时间段记录sql语句

    要查找某时间段的记录,例如查找2013-11-1到2013-11-30的记录. ' group by user_name, user_id 注意:SQL语句中含有sum累加函数,末尾要加group b ...

  4. JQUERY简写案例

    源代码: <script ttype="text/javascript"> $(function(){ $(".btn").eq(0).click( ...

  5. Javascript多线程引擎(十)---Web服务器

     Javascript多线程引擎(十)---Web服务器 经过一天的努力, 引擎可以支持web服务的功能了并且支持UTF-8的编码, 具有对HTTP参数的解析,状态码的配置, 响应报文的输出等. 提供 ...

  6. (蓝牙)网络编程中,使用InputStream read方法读取数据阻塞的解决方法

    问题如题,这个问题困扰了我好几天,今天终于解决了,感谢[1]. 首先,我要做的是android手机和电脑进行蓝牙通信,android发一句话,电脑端程序至少就要做到接受到那句话.android端发送信 ...

  7. 利用Matlab生成一个网格化的三维三轴椭球面(生成直角坐标)

    代码很简单,a,b,c分别为椭球的三轴轴长,a=b=c时得到的是三维球面,a=b!=c时得到的是三维椭球面,a!=b且a!=c且b!=c时得到的是三维旋转椭球面 %生成一个笛卡尔坐标系下三轴椭球表面的 ...

  8. 《剑指Offer》面试题-重建二叉树

    题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7 ...

  9. 记录在IIS中安装部署Orchard遇到的问题

    本机环境:Windows 8.1 + IIS8.5 + VS2013+SQLServer2012 首先是从官网直接下载Orchard.Web 1.7.2版的安装包,在本机IIS上部署,按官方文档一步步 ...

  10. [转]在 Mac OS X上编译 libimobiledevice 的方法

    link: http://blog.boceto.fr/2012/05/05/libimobiledevice-for-macosx/ The objective of the day: Compil ...