数字魔方玩法:底面还原、中间还原、调整顶层、顶层角块调整。
1、底面十字,底面还原。
2、然后再将中间还原,还原中间一层的四个棱块。
3、顶面十字,顶面还原,只需要观察顶面的棱块,只需要调整顶层四个角块朝向。
4、之后让顶层只有棱块不对,角块都对。
数字魔方介绍
数字魔方是指在N*N的正方形网格中(称为N阶),填入1~N共N个数,使得每一行、每一列,均由1~N组成,没有重复、没有遗漏。这就是数字魔方。
产品特色
外形时尚:打破传统数字标牌单一的表现形式,四面都有屏幕,让画面显得更立体。
组合多变:多个魔方之间可以自由组合,造型多变,让广告机本身也是一件艺术品。
安装方便:组合魔方单个重量只有20KG,魔方独特的卡槽设计,组合安装容易 *** 作。
风格百搭:可以适应多种场合,时尚、动感、古朴……自然融入环境,为环境增色。
互动体验:科技融合互动,让广告展示不再是一个人的精彩,真正考虑观众的需求。
智能播控:外形再炫,也离不开功能强大的后台 *** 作系统,让播控更智能才是核心。
具体做法:方法一;
/*此程序使我按照上面介绍的魔方阵的规律编写的,不过只能求奇数魔方阵,经过测试可以算到508阶*/
#define N 7
#include<stdio.h>
void main()
{
int a[N][N],i,j,k
for(i=0i<Ni++)/*先处理第一行*/
for(j=0j<Nj++)
{
a[i][j]=0/*先令所有元素都为0*/
}
j=(N-1)/2/*判断j的位置*/
a[0][j]=1 /*将1放在第一行中间一列*/
for(k=2k<=N*Nk++)/*再从2开始处理*/
{
i=i-1 /*存放的行比前一个数的行数减1*/
j=j+1 /*存放的列比前一个数的列数加1*/
if((i<0)&&(j==N))/*前一个数是第一行第N列时,把下一个数放在上一个数的下面*/
{
i=i+2
j=j-1
}
else
{
if(i<0)/*当行数减到第一行,返回到最后一行*/
i=N-1
if(j>N-1)/*当列数加到最后一行,返回到第一行*/
j=0
}
if(a[i][j]==0) /*如果该元素为0,继续执行程序*/
a[i][j]=k
else /*如果该元素不为0,就说明要填的数的位置已经被占,则该数放在上一个数的下面*/
{
i=i+2
j=j-1
a[i][j]=k
}
}
for(i=0i<Ni++)/*输出数组*/
{
for(j=0j<Nj++)
printf("%5d",a[i][j])
printf("\n\n")
}
}
方法二:
/*这个是网友qfyzy为帮助我找错而提供的,可以算到99阶*/
#define N 7
#include<stdio.h>
void main()
{
int a[N][N]={0},i=0,j,k/*先令所有元素都为0*/
j=(N-1)/2
i=0
for(k=1k<=N*N)/*开始处理*/
{
if((i<0)&&(j==N))/*前一个数是第一行第N列时,把下一个数放在上一个数的下面*/
{
i=i+2
j=j-1
}
else if(i<0)/*当行数减到第一行,返回到最后一行*/
i=N-1
else if(j>N-1)/*当列数加到最后一行,返回到第一行*/
j=0
else if(!a[i][j]){ /*如果该元素为0,继续执行程序*/
a[i][j]=k++
i=i-1
j=j+1
}
else /*如果该元素不为0,就说明要填的数的位置已经被占,则该数放在上一个数的下面*/
{
i=i+2
j=j-1
}
}
for(i=0i<Ni++)/*输出数组*/
{
for(j=0j<Nj++)
printf("%5d",a[i][j])
printf("\n\n")
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)