理解了算法的思想就很简单了,

首先将1放到第一排的中间,然后向左上角走,当行数超过索引,则将该数放到最后一排接下来的一列中去,当列数超过索引,则放到上一排的第一列中去,若都没有超过索引,但是此时的右上角有数或是已经到魔方阵的最右上角那块,那么列数不变,向下行走去。每次放好一个数之后,数本身加1,并继续放已经加1后的数。

#include<stdio.h>
int IsAttact(int **p,int i,int j,int n)
{
if((i-1<=0)&&(j+1>n))
{
return 0;
}
else if(i-1<=0)
{
return 1;
}
else if(j+1>n)
{
return 2;
}
else if(p[i-1][j+1]!=0)
{
return 3;
}
else
{
return 4;
}
}
void Cube(int **p,int n)
{
int i=1;
int j=n/2+1;
int sum=2;
while (sum<=n*n)
{
int value=IsAttact(p,i,j,n);
if(value==1)
{
i=n;j=j+1;
p[i][j]=sum;
}
else if(value==2)
{
i=i-1;j=1;
p[i][j]=sum;
}
else if(value==3||value==0)
{
i=i+1;
p[i][j]=sum;
}
else if(value==4)
{
i=i-1;j=j+1;
p[i][j]=sum;
}
sum=sum+1;
}
}
void output(int **p,int n)
{
for(int i1=1;i1<=n;i1++)
{
for(int j1=1;j1<=n;j1++)
{
printf("%d\t",p[i1][j1]);
}
printf("%\n");
}
}
void main()
{
int n;
printf("请输入魔方的阶数\n");
scanf("%d",&n);
int **p=new int*[n];
for(int i=1;i<=n;i++)
{
p[i]=new int[n];
}
for(int i1=1;i1<=n;i1++)
{
for(int j1=1;j1<=n;j1++)
{
p[i1][j1]=0;
}
}
p[1][n/2+1]=1;
Cube(p,n);
output(p,n);
}

C++奇数魔方阵的更多相关文章

  1. SDUST 作业10 Problem D 魔方阵

    Description 所谓N阶魔方阵,是一个N*N的方阵,其元素由1到N^2组成,且方阵每行每列以及对角线的元素和相等.如三阶魔方阵: 8 1 6 3 5 7 4 9 2     魔方阵的规律如下: ...

  2. 基于visual Studio2013解决C语言竞赛题之0523魔方阵

     题目

  3. C语言---魔方阵

    魔方阵的定义:在n*n的方阵中,每一行的和=每一列的和=对角线的和.(本文中涉及的n为大于3的奇数). 例如3*3的魔方阵为: 5*5的魔方阵为: 如何写魔方阵呢? 1.数字1位于第一行的正中间2.下 ...

  4. Project 3:N级魔方阵

    魔方阵:由n*n个数字所组成的n阶方阵,具有各对角线,各横列与纵行的数字和都相等的性质,称为魔方阵.而这个相等的和称为魔术数字.若填入的数字是从1到n*n,称此种魔方阵为n阶正规魔方阵. 目标:输入一 ...

  5. C语言复习---输出魔方阵

    一:奇魔方阵 算法: 1.第一个元素放在第一行中间一列 .下一个元素存放在当前元素的上一行.下一列. .如果上一行.下一列已经有内容,则下一个元素的存放位置为当前列的下一行. 在找上一行.下一行或者下 ...

  6. 牛客网 牛客小白月赛2 A.数字方阵-反魔方阵,梁邱构造法

    天坑未补... 水一波博客,再不写博客就咸成鱼干了,只写题不写题解,过一段时间就忘了自己学过什么了. 最近重点就是把开学以来写的题补出来,没学的就滚去学会啊(= =),填一下坑... 从这篇博客开始, ...

  7. Python旋转魔方阵

    [问题描述]输入一个自然数N(2≤N≤9),要求输出如下的魔方阵,即边长为N*N,元素取值为1至N*N,1在左上角,呈顺时针方向依次放置各元素. N=3时:    1    2    3    8   ...

  8. 【4N魔方阵】

    /* 4N魔方阵 */ #include<stdio.h> #include<stdlib.h> #define N 8 int main(void){ int i, j; ] ...

  9. node操作MongoDB数据库之插入

    在上一篇中我们介绍了MongoDB的安装与配置,接下来的我们来看看在node中怎样操作MongoDB数据库. 在操作数据库之前,首先应该像关系型数据库一样建个数据库把... 启动数据库 利用命令提示符 ...

随机推荐

  1. IO-同步,异步,阻塞,非阻塞

    IO-同步,异步,阻塞,非阻塞1.什么是IO数据在系统内核(kernel)和用户进程之间的传递,称为IO. 2.IO操作步骤以read为例,涉及两个系统对象,调用IO的process(or threa ...

  2. trace工具,c++/c#/python

    下载地址: http://files.cnblogs.com/files/wjx0912/xtrace.rar 很方便的调试工具,已在c#,  vc2015, python2.7.10环境下测试. 闭 ...

  3. Intellij IDEA连接Git@OSC

    错误提示:fatal: remote origin already exists. 解决办法:$ git remote rm origin http://my.oschina.net/lujianin ...

  4. 在Ext JS 6中添加本地化包

    我在官方论坛发的帖子终于有人恢复了,也终于知道如何添加本地化包了.在Ext JS 6中,Ext JS属于经典工具包,而本地化是包含在经典工具包中,因而在app.json中,要添加本地化包,必须在cla ...

  5. Matlab绘制幅值谱和相位谱

    1. 对于直接给出频响函数的情况 这里以滑动平均的频响函数作为例子,滑动窗口为[0, 4]. 上式中M2=4. >> w=0:0.001:2*pi; >> h1=1-exp(- ...

  6. 【uTenux实验】集合点端口

    这个是头一次接触的概念.比较不好理解.内核规范中的说明就要20页! 看了王总写的uTenux内核规范之后,有那么一点明白了但理解不深. 集合点端口就像每次工作前的收集情况会.首长下达收集情况指令,各个 ...

  7. Eclipse编辑XML文件的代码提示

    1.Eclipse无法解析的情形 Eclipse中编辑XML文件时,能够代码自动提示,是因为在XML头部引入了DTD文件(文档类型定义),Eclipse就是通过解析这个DTD文件,来达到代码提示的功能 ...

  8. MapReduce格式与类型

    MapReduce Types MapReduce是一个简单的数据处理模型,map与reduce的输入和输出类型都为key-value形式的键值对. map: (K1, V1) → list(K2, ...

  9. Codeforces724D [字符串][乱搞][贪心]

    /* 不要低头,不要放弃,不要气馁,不要慌张 题意:给你一个区间长度n和一个字符串,要求在字符串中选择一些symbol使得字符串的任意长度为n的子区间都存在至少一个symbol. 任意选取symbol ...

  10. 四、maya python plugin

    只是作简单的了解. 1区别 (1)Python scripts:可以在Maya的script editor 执行.用于扩展maya.cmd模块. The import statement below ...