高手提示一下
文人相轻。。。。。。。
第一个事是左右偏旁,第二个事是上下结构,第三个是整体字
//分析:魔方阵有如下规律:// 1:自然数1总是在方阵第一行当中一列上。
// 2:后续的自然数在当前数的右上方,
// 1)如果是在第一行则行数变为第n行列数加1 ;
// 2)如果是在最后一列,行数减1,列数为第1行。
// 3)如果后续的数所处位置已有数,则行数加1,列数不变。
/******************************************************************************************************************************
巧填奇数阶幻方(魔方阵)[转]2007-01-03 17:57 一、什么叫幻方?
(通俗点说)把一些有规律的数填在纵横格数都相等的正方形图内,使每一行、每一列和每一条对角线上各个数之和都相等。这样的方阵图叫做幻方。
幻方又分为奇数阶幻方和偶数阶幻方。奇数阶幻方是指横行、竖列都是单数(即3、5、7、9……)的方阵图。偶数阶幻方是指横行、竖列都是双数(即4、6、8、10……)的方阵图。
二、奇数阶幻方的填法。
奇数阶幻方中最简便的一种就是三阶幻方,又称“九宫图”。
平常我们遇到这类题都是用分析、分组、尝试的方法推出,这种方法较麻烦,如果是五阶幻方、七阶幻方就更困难了。
有一种方法不仅能很快地填出三阶幻方,还能很快地填出五阶幻方、七阶幻方、九阶幻方……那就是“口诀法”
口 诀
“1”坐边中间,斜着把数填;
出边填对面,遇数往下旋;
出角仅一次,转回下格间。
注意:
(1)这里的“1”,是指要填的这一列数中的第一个数。
(2)“1”坐边中间,指第一个数要填在任何一边的正中间的空格里。
(3)从1到2时,必须先向边外斜(比如:第一个数填在上边的正中间,填第二个数时,要向左上方或右上方斜),填后面的数时也要按照同样的方向斜。
*******************************************************************************************************************************/
#include<iostream>
using namespace std;
void main()
{
int a[32][32],i,j,k,p,n;
p=1;
while(p==1)
{
cout<<"Enter n(n=1~25):";
cin>>n;
if((n!=0)&&(n<=25)&&(n%2!=0))
p=0;
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=0;
j=n/2+1;
a[1][j]=1;
for(k=2;k<=n*n;k++)
{
i=i-1;
j=j+1;
if((i<1)&&(j>n))
{
i=i+2;
j=j-1;
}
else
{
if(i<1)
i=n;
if(j>n)
j=1;
}
if(a[i][j]==0)
a[i][j]=k;
else
{
i=i+2;
j=j-1;
a[i][j]=k;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
/*C_ban*
所谓的魔方距阵就是一种特殊的奇数阶方阵:它的行,列,对角线,上的数字之和都要相等,且方阵中的每一个数字都不相等,且数字的范围都在1到n*n之间.
我编的程序如下:
*/
#include<stdio.h>
#define N 15
main()
{
int i,j,row,cloum,size,square[N][N],count;
clrscr();
printf("please enter the square size(odd && <=15):\n");
scanf("%d",&size);
while(size%2==0||size>15||size<3)
{
printf("error due to the wrng input!please input it again!\n");
scanf("%d",&size);
}
for(i=0;i<size;i++)
for(j=0;j<size;j++)
square[i][j]=0;
i=0;j=(size-1)/2;
square[i][j]=1;
for(count=2;count<=size*size;count++)
{
row=i-1<0?(size-1):(i-1);
cloum=j-1<0?(size-1):(j-1);
if(square[row][cloum])
i=(++i)%size;
else
{i=row;
j=j-1<0?(size-1):(j-1);
}
square[i][j]=count;
}
printf("the %d square is:\n",size);
for(i=0;i<size;i++)
{
for(j=0;j<size;j++)
printf("%d",square[i][j]);
printf("\n");
}
}
只能求奇数的魔方阵
#define N 20
main()
{
int a[N][N];
int n,i,j,r;
scanf("%d",&n);
for(i=0;i<N;i++) for(j=0;j<N;j++) a[i][j]=0;
i=0;
j=n/2;
a[i][j]=1;
for (r=2;r<=n*n;r++)
if (a[(i+n-1)%n][(j+1)%n]==0)
{i=(i+n-1)%n;j=(j+1)%n;a[i][j]=r;}
else
{i=(i+1)%n;a[i][j]=r;}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++) printf("%4d",a[i][j]);
printf("\n");
}
}
我以前 写过而且 几乎全部用if语句 我把规律给你说下:
(N是奇数,可以定义一个a[n][n]来存所填的数据,初始化为0)
n=1
一:n为1放到N阶方阵 的第一行 中间位置.
二:n不为1,放在n-1所在位置的上一行右一列的位置上,如果,该位置已经填有数据了,则直接放在n-1位置的下一行,同一列位置上,
三:如果n-1的位置已经在第一行,则它的上一行指最后一行,同理,如果n-1的位置在最右列,则它的右一列为第一列,如果n为最后一行,则它的下一行,为第一行.
如上 n++ 直到n^2为止
然后你在输出这个N阶方阵
我用C++写过,有个算法的本来,但现在自己写的代码我都看不懂了:
#include <iostream>
#include <algorithm>
#include <vector>
#include <functional>
using namespace std;
const int size = 200; // 最大支持到200*200,可以自己改到支持更大
int MS[size][size];
int Digit(int n)
{
int x = 0;
for(; n > 0; n /= 10, ++x);
return x;
}
void RowSwap(int n)
{
for(int i = 0; i < (n%2 == 0 ? n : n-1)/2; ++i)
{
for(int j = 0; j < n; ++j)
{
swap(MS[i][j], MS[n-i-1][j]);
}
}
}
void Print(int n)
{
int x = Digit(n*n);
for(int i = 0; i < n; ++i)
{
for(int j = 0; j < n; ++j)
{
cout.width(x);
cout << MS[i][j] << ' ';
}
cout << endl;
}
}
int OddFill(int iX, int iY, int iU, int iVal)
{
int pRP = iY;
int pCP = iX + (iU-1)/2;
int pN = iVal;
MS[pRP][pCP] = pN;
for(int i = pN+1; i < iU*iU + iVal; ++i)
{
if(pN%iU == 0)
{
pRP = (pRP == iY+iU-1 ? iY : pRP+1);
MS[pRP][pCP] = i;
}
else
{
pRP = (pRP == iY ? iY+iU-1 : pRP-1);
pCP = (pCP == iX+iU-1 ? iX : pCP+1);
MS[pRP][pCP] = i;
}
pN = i;
}
return pN+1;
}
void OddSquare(int n)
{
OddFill(0, 0, n, 1);
RowSwap(n);
Print(n);
}
void DEvenSquare(int n)
{
for(int i = 0, k = 1; i < n; ++i)
{
for(int j = 0; j < n; ++j, ++k)
{
MS[i][j] = k;
}
}
vector<int> erase;
for(int i = 0; i < n/4; ++i)
{
for(int j = 0, c = 0; j <= n; ++c)
{
erase.push_back(MS[i*4][j]);
erase.push_back(MS[i*4+3][j]);
MS[i*4][j] = 0;
MS[i*4+3][j] = 0;
if(c%2 == 0)
{
erase.push_back(MS[i*4+1][j+1]);
erase.push_back(MS[i*4+3-1][j+1]);
MS[i*4+1][j+1] = 0;
MS[i*4+3-1][j+1] = 0;
j += 3;
}
else
{
erase.push_back(MS[i*4+1][j-1]);
erase.push_back(MS[i*4+3-1][j-1]);
MS[i*4+1][j-1] = 0;
MS[i*4+3-1][j-1] = 0;
++j;
}
}
}
sort(erase.begin(), erase.end(), greater<int>());
for(int i = 0, c = 0; i < n; ++i)
{
for(int j = 0; j < n; ++j)
{
if(MS[i][j] == 0)
MS[i][j] = erase[c++];
}
}
RowSwap(n);
Print(n);
}
void SEvenSquare(int n)
{
int iU = n/2;
OddFill(00, iU, iU, // 左下
OddFill(iU, 00, iU, // 右上
OddFill(iU, iU, iU, // 右下
OddFill(00, 00, iU, // 左上
1))));
int i;
for(i = 0; i < (n-2)/4; ++i)
{
for(int j = 0; j < iU; ++j)
{
if(i == 0 && j == (iU-1)/2)
continue;
swap(MS[j][i], MS[j+iU][i]);
}
}
swap(MS[(iU-1)/2][i], MS[(iU-1)/2+iU][i]);
for(i = n-1; i >= n-((n-2)/4-1); --i)
{
for(int j = 0; j < iU; ++j)
{
swap(MS[j][i], MS[j+iU][i]);
}
}
RowSwap(n);
Print(n);
}
void MagicSquare(int n)
{
if(n%2 != 0)
OddSquare(n);
else if(n%4 == 0)
DEvenSquare(n);
else
SEvenSquare(n);
}
int main()
{
MagicSquare(3);
cout << '\n';
MagicSquare(4);
cout << '\n';
MagicSquare(5);
cout << '\n';
MagicSquare(6);
cout << '\n';
}
手提式干粉灭火器使用方法
一是靠干粉中的无机盐的挥发性分解物,与燃烧过程中燃料所产生的自由基或活性基团发生化学抑制和负催化作用,使燃烧的链反应中断而灭火。二是靠干粉的粉末落在可燃物表面外,发生化学反应,并在高温作用下形成一层玻璃状覆盖层,从而隔绝氧,进而窒息灭火。另外,还有部分稀释氧和冷却作用。
手提式灭火器设置在挂钩、托架上
挂钩和托架的高度和位置也应根据使用者的身高和习惯进行调整,以确保使用者在紧急情况下能够轻松取用灭火器。综上所述,手提式灭火器设置在挂钩、托架上是一种既方便又安全的做法。通过合理的设置和调整,可以确保灭火器在紧急情况下能够迅速有效地发挥作用,从而最大程度地减少火灾带来的损失和风险。
手提式干粉灭火器有效期为几年 手提式干粉灭火器使用方法
(2)手提式干粉灭火器适灭火时,可手提或肩扛灭火器快速奔赴火场,在距燃烧处5米左右,放下灭火器。如在室外,应选择在上风方向喷射。使用的干粉灭火器若是外挂式储压式的,操作者应一手紧握喷枪、另一手提起储气瓶上的开启提环。如果储气瓶的开启是手轮式的,则向逆时针方向旋开,并旋到最高位置...
手提式干粉灭火器多重以及使用方法
但是事实上,不同的灭火器里面装的灭火材料是不一样的,而且不同的灭火器,它的重量可能不一样。不同的灭火器可能有不同的重量,但是他们都是有自己的一个标准的,也就是说不同的灭火器应该有怎样的重量,这个都是有国家的相关规定以及标准了。那么接下来小编就来给大家介绍一下手提式干粉灭火器的...
用手提式灭火器灭火的正确方法是
用手提式灭火器灭火的正确方法如下:1、使用手提式泡沫灭火器时,首先用手握住灭火器的提环,不要横扛也不要横拿,要平稳。2、一手握住提环,另一手握住灭火器筒身的底边。3、然后把灭火器颠倒过来,将喷嘴对准火焰根部,用力摇晃几下,即可喷出二氧化碳和泡沫灭火。手提式干粉灭火器简介:手提式干粉...
手提式ABC干粉灭火器的使用方法?
方法\/步骤如下:1、在灭火时,将干粉灭火器提到起火地点,首先提起干粉灭火器上下摆动,使干粉灭火器内的干粉变的松散。2、然后再拔掉铅封~保险销,离火势5-7米处,一只手拿喷管对准火势,另只手压压把,用力压下压把,拿喷管左右摆动,干粉在气体的压力下由喷嘴喷出,形成浓云般的粉雾而使火熄灭。3...
灭火器按其移动形式可分为手提式和推车式
手提式灭火器灭火时,可手提或肩扛灭火器快速奔赴火场,在距燃烧处5米左右,放下灭火器。如在室外,应选择在上风方向喷射。当距离着火点10米左右,即可将筒体颠倒过来,一只手紧握提环,另一只手扶住筒体的底圈,将射流对准燃烧物。推车式灭火器使用时,一般由两人操作,先将灭火器迅速推拉到火场,在...
手提式灭火器使用步骤包括
灭火时, 一手握住提环, 另一手握住筒身的底边, 将灭火器颠倒过来, 喷嘴对准火 源,用力摇晃几下, 即可灭火。注意:不要将灭火器的盖与底对着人体, 防止盖、底弹出伤人。不要与水同时喷射在一起,以免影响灭火效果。扑灭电器火灾时,尽量先切断电源,防止人员触电。(2)手提式二氧化碳灭火器 ...
手提式干粉灭火器如何使用?
干粉灭火器最常用的开启方法为压把法:1、将灭火器提到距火源适当位置后,先上下颠倒几次,使筒内的干粉松动。2、拔掉铅封 3、拉出保险销 4、让喷嘴对准燃烧最猛烈处,拔去保险销,压下压把,灭火剂便会喷出灭火。5、开启干粉灭火棒时,左手握住其中部,将喷嘴对准火焰根部,右手拔掉保险卡,旋转...
手提式灭火器的安全距离
手提式灭火器的安全距离约为2米。干粉灭火器在使用的时候要先将瓶子摇晃一下,让里面的干粉尽量的松动,以免凝聚在一起不好喷出。随后除掉铅封,拔下保险栓,左手握着喷管,右手按住压把,它的喷射距离在2米左右,所以我们尽量在距离火源2米的地方,用力压下压把,左手拿着喷管对准火苗来回晃动。这个...
夹岭小儿:[答案] 由上面的条件可以看出: Y=1+2+3+……+X 所以 Y=X(X+1)/2
元阳县19447868057: 公司领导发现工作期间员工拨打电话聊天~~要求基层干部提交一份整改书~~高手提示一下 - ?
夹岭小儿: 我们公司也有这种情况,公司一段时间内会调用座机通话记录,发现有大量个人通话记录的就给予处罚,少量给予警告 要是用手机聊天的话,那就出个处罚制度,杀鸡儆猴吧 正规企业还会要求所有员工进入工作区后,手机要调为振动不过这都是传统型企业的做法,只要能提升工作效率,员工做为一种舒缓工作压力的方式也就算了
元阳县19447868057: 玩cf跟鼠标有关吗?还是说只靠技术鼠标随意就行呢??高手提示一下!!!!!! - ?
夹岭小儿: 这还用高手解答啊 当然与鼠...
元阳县19447868057: 软件在XP系统怎样用DOS安装,请高手提示一下. ?
夹岭小儿: 你说的是不是怎样在dos下装xp啊 新手如何装一个完美系统 相信对于那些大虾级的人... 有的是F2,有的是F10,一般开机时在屏幕低端都有提示. 进入BIOS后切勿随便改...
元阳县19447868057: 请高手提示一下电脑开机密码忘怎么办? - ?
夹岭小儿: 一、删除SAM文件,清除Administrator账号密码Windows 2000所在的Winnt\System32\Config目录下有个SAM文件(即账号密码数据库文件),它保存了Windows 2000中所有的用户名和密码.当你登录的时候,系统就会把你键入的用户名和...
元阳县19447868057: 电焊机故障 高手提示一下 - ?
夹岭小儿: 你的电焊机是什么型号的..如果是交流电焊机的话,没有什么冒烟和什么异味;;;;说明线圈是没问题的,那你就检查一下接线柱是否有松动或接触不良'''' 如果是直流的就的用万用表检查了.好好看看.大多是接线柱的问题
元阳县19447868057: 电脑出现该提示,请各位电脑高手看一下??
夹岭小儿: 你的电脑可能系统出错了.最好的方法有两种: 1.先看一下有么有病毒要么没有从新一下计算机看可以,一般来说是可以的,要是还不行那你最好做一下系安全. 2.检查下内存.显卡.是不是松动了或么放好.
元阳县19447868057: 玩口袋妖怪心金找不到水君了麻烦高手提示一下在哪能碰见他说的具体点? ?
夹岭小儿: 心金水君不是随机遇到,他会随着剧情在特定地点与其战斗,楼主在一下地点触发水君的剧情,最后就可以捕获了:第一次:湛蓝市上面的海滩.第二次:42号道路中段靠下.第三次:枯叶市,出港的时候在岸边.第四次:14号道路右侧水中,有一堆风力发电机那附近.最后一次:25号道路正辉家边上. (楼主如有不解,hi我)
元阳县19447868057: 请 高手提示一下DNF武神PK是如何加点??
夹岭小儿: 一般都是个人习好加点,采纳他人加点的总归不是自己最擅长的.
元阳县19447868057: 安装Fedora8系统提示出错信息.请高手帮助解决一下:我用的是 ?
夹岭小儿: ★1.安装前的准备:要从硬盘安装Fedora 8,这里你要保证存放Feora 8镜像文件的... 这里也可以不写,不过后面你需要在进入安装时在提示符GRUB>后依次输入: kernel...