- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
魔方阵算法及C语言实现.doc
魔方阵算法及C语言实现 1 魔方阵概念 魔方阵是指由1,2,3……n2填充的,每一行、每一列、对角线之和均相等的方阵,阶数n = 3,4,5…。魔方阵也称为幻方阵。 例如三阶魔方阵为: 魔方阵有什么的规律呢? 魔方阵分为奇幻方和偶幻方。而偶幻方又分为是4的倍数(如4,8,12……)和不是4的倍数(如6,10,14……)两种。下面分别进行介绍。 奇魔方(阶数n = 2 * m + 1,m =1,2,3……)规律如下: 数字1位于方阵中的第一行中间一列; 数字a(1 a? ≤ n2)所在行数比a-1行数少1,若a-1的行数为1,则a的行数为n; 数字a(1 a? ≤ n2)所在列数比a-1列数大1,若a-1的列数为n,则a的列数为1; 如果a-1是n的倍数,则a(1 a? ≤ n2)的行数比a-1行数大1,列数与a-1相同。 偶魔方的情况比较特殊,分为阶数n = 4 * m(m =1,2,3……)的情况和阶数n = 4 * m + 2(m = 1,2,3……)情况两种。 算法1:阶数n = 4 * m(m =1,2,3……)的偶魔方的规律如下: 按数字从小到大,即1,2,3……n2顺序对魔方阵从左到右,从上到下进行填充; 将魔方中间n/2列的元素上、下进行翻转; 将魔方中间n/2行的元素左、右进行翻转。 C语言实现 算法2:阶数n = 4 * m(m =1,2,3……)的偶魔方的规律如下: 按数字从小到大,即1,2,3……n2顺序对魔方阵从左到右,从上到下进行填充; 将魔方阵分成若干个4×4子方阵,将子方阵对角线上的元素取出; 将取出的元素按从大到小的顺序依次填充到n×n方阵的空缺处。 C语言实现 算法 设k = 2 * m + 1;单偶魔方是魔方中比较复杂的一个。 将魔方分成A、B、C、D四个k阶方阵,如下图这四个方阵都为奇方阵,利用上面讲到的方法依次将A、D、B、C填充为奇魔方。 交换A、C魔方元素,对魔方的中间行,交换从中间列向右的m列各对应元素;对其他行,交换从左向右m列各对应元素。 交换B、D魔方元素,交换从中间列向左m – 1列各对应元素。 C语言实现 ==========================================》 #include stdio.h#define N 16 //这里可以修改N的值,并且N只能为奇数 int main() { int a[N][N]={0},i,j,k,p,m,n; p=1; while(p==1) { printf(Enter n(1~%d): ,N-1);/*可以输入小于等于N-1的奇数*/ scanf(%d,n); if((n!=0)(nN)(n%2!=0)) p=0; } i=n+1; j=n/2+1; /*建立魔方阵*/ a[1][j]=1; for(k=2;k=n*n;k++) { i=i-1; j=j+1; if((i1)(jn)) { i=i+2;j=j-1; } else { if(i1) i=n; if(jn) 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++) printf(%4d,a[i][j]); printf(\n); } } 将1~n的平方这几个数构成一个n阶魔方阵。算法: 依以下法则,你可以很快的写出奇数阶幻方!当然,这种写法只是其中一个答案,而不是唯一答案。 1)将1填入第一行中间; 2)将每个数填在前一个数的右上方。 3)若该位置超出最上行,则改填在最下行的对应位置; 4)若该位置超出最右列,则该填在最左列的对应行位置; 5)若某元素填在第一行最右列,下一个数填在该数同列的下一行; 6)若某数已填好,但其右上角已填了其他数据,则下一个数填在该数同列的下一行位置。 #includestdio.h void main() { int a[15][15]={0},i,j,m,n,temp,M; printf(请输入一个3~15的奇数:\n); scanf(%d,M); i=0; j=M/2; a[i][j]=1; for(temp=2;temp=M*M;temp++) { m=i; n=j; i--; j++; if(i0) i=M-1; if(jM-1) j=0; if(a[i][j]!=0) { i=m+1,j=n; a[i][j]=temp; continue; } a[i][j]=temp; } printf(%d×%d魔方阵:\n,M,M); for(i=0;iM;i++) { for(j=0;jM;j++) printf(%4d,a[i][j])
有哪些信誉好的足球投注网站
文档评论(0)