ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:21.05KB ,
资源ID:16645976      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16645976.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(魔方阵实现方法全Word文档下载推荐.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

魔方阵实现方法全Word文档下载推荐.docx

1、 int aNN,i,j,k; for(i=0;iN;i+) /*先处理第一行*/ for(j=0;jj+) aij=0; /*先令所有元素都为0*/ j=(N-1)/2; /*判断j的位置*/ a0j=1; /*将1放在第一行中间一列*/ for(k=2;k=N*N;k+) /*再从2开始处理*/ i=i-1; /*存放的行比前一个数的行数减1*/ j=j+1; /*存放的列比前一个数的列数加1*/ if(i0)&(j=N) /*前一个数是第一行第N列时,把下一个数放在上一个数的下面*/ i=i+2; j=j-1; else if(iN-1) /*当列数加到最后一行,返回到第一行*/ j=0

2、; if(aij=0) /*如果该元素为0,继续执行程序*/ aij=k; else /*如果该元素不为0,就说明要填的数的位置已经被占,则该数放在上一个数的下面*/i+) /*输出数组*/ printf(%5d,aij);nn); 方法二:/*这个是网友qfyzy提供的,可以算到99阶*/ int aNN=0,i=0,j,k; i=0; for(k=1;) /*开始处理*/ else if(i else if(!aij) /*如果该元素为0,继续执行程序*/ aij=k+;方法三:/*此程序是在网上找到的c程序设计习题7.7的答案,只能算奇数阵,可以算到15阶*/int a1616,i,j,

3、k,p,m,n;p=1;while(p=1) printf(请输入阶数: /*原答案没有这个输出语句*/ scanf(%d,&n); if(n!=0)&(nn) i=i+2; if(i1)i=n;n)j=1; if(aij=0)aij=k; for(j=1;%3dn /*下面的都是在网上搜索到的,大多数是在编程论坛找到的*/方法四:/*这个是我找到的功能最强大的求魔方阵的程序,奇、偶阵都可以求,可以多次测试,最大阶可以自己设定(我测试的最大设定值是507,此时可以运行到506阶,不过也可以设定到508,但是这时真正运行的时候却达不到506阶)*/#include math.hconio.h#d

4、efine MAX_INDEX 100 /*这里可以修改最大阶*/void swap(int *a,int *b)int t;t=*a;*a=*b;*b=t;/*快速排序算法*/void QuickSort(int a, int l, int r)int i=l; /*从左至右的游标*/int j=r + 1; /*从右到左的游标*/int pivot=al;if (l = r) return;/*把左侧= pivot的元素与右侧= pivot 的元素*/i = i + 1; while (ai pivot);/*在右侧寻找if (i = j) break; /*未发现交换对象*/swap(&

5、ai,&aj);/*设置p i v o t*/al = aj;aj = pivot;QuickSort(a, l, j-1); /*对左段排序*/QuickSort(a, j+1, r); /*对右段排序*/void Huanf(int ArrayMAX_INDEX,int n)int i,j;int a,b,m;int tempArray1MAX_INDEX;int tempArray2MAX_INDEX;a=n/2;b=a+1;m=n%4;switch(m)case 0:case 2:/*穿心对调*/for(i=0;n;for(j=0;n/2;if(i/*重排米字*/tempArray1i

6、=Arrayii;tempArray2i=Arrayai;QuickSort(tempArray1,0,n-1);QuickSort(tempArray2,0,n-1);Arrayii=tempArray2i;Arrayai=tempArray1i;tempArray1i=Arrayin-1-i;tempArray2i=Arrayia;Arrayin-1-i=tempArray2i;Arrayia=tempArray1i;/*End重排米字*/if(m=3)=a+1)Arraya-1i,&Arraya-1n-1-i);Arraya-1a-1,&Arraya+1a+1);Arraya-1b-1,

7、&Arraya+1b-1);default:return;int NeMAX_INDEXMAX_INDEX;int i,j,n;while(1)printf(Please Input N (0 quit): nscanf(if(n=0)/*数组赋初值*/Neij=i*n+(j+1);Huanf(Ne,n);%-4d,Neij);if(j=n-1)getch();方法五:/*相比方法四的程序,这个程序更加简洁,唯一的缺陷是只能求奇数魔方阵,也可以多次测试,最大阶可以自己设定(我测试的最大设定值是507,此时也可以运行到507阶)*/#define MAXSIZE 21 /*这里可以修改最大阶*/

8、void main(void)int matrixMAXSIZEMAXSIZE; /* the magic square */int count; /* 1.n*n counting */int row; /* row index */int column; /* column index */int order; /* input order */char line100;dosystem(clsnttt 奇 数 阶 魔 方 阵(输入1退出程序)nttt=nn请输入一个小于等于%d的奇数:,MAXSIZE);gets(line);order=atoi(line);if(order=1)exi

9、t(0);if (orderMAXSIZE)ntt* Error * 输入的奇数 %dn, MAXSIZE);else if (order%2=0)ntt* Error * 输入的必须是奇数!else row=0; /* start of from the middle */column=order/2; /* of the first row. */for (count=1;count=order*order; count+)matrixrowcolumn = count; /* put next # */if (count % order = 0) /* move down ? */row

10、+; /* YES, move down one row */ /* compute next indices */row = (row = 0) ? order - 1 : row - 1;column = (column = order-1) ? 0 : column + 1;nn%d阶魔方阵如下:, order);for (row=0; row order; row+)for (column = 0; column column+)%4d, matrixrowcolumn);pausewhile(order!=1);方法六:/*这个程序的功能也很强大,奇、偶阵都可以求,最大阶可以自己设定

11、(我测试的最大设定值是508,此时可以运行到508阶)*/#define MAX_NUM 15 /*这里可以修改最大阶*/int main() int rows = 0, center = 0, iArrayMAX_NUMMAX_NUM; int RowSet = 0, LineSet = 0, newRowSet = 0, newLineSet = 0; int i = 0, j = 0; int okNum = 0; / set the items of array iArray to be 0 for ( i = 0; i MAX_NUM; i+ ) for ( j = 0; j j+

12、) iArrayij = 0; / get the rows number while ( 1 )输入行数:, &rows); if ( rows = MAX_NUM ) rows -= 1; break; else 行数必须在 0 和 %d 之间, 请重新, MAX_NUM); / set number 1 center = rows / 2; iArray0center = 1; / initialize the okNum, RowSet and LineSet okNum = 1; RowSet = 0; LineSet = center; / set each item in whi

13、le ( okNum (rows + 1) * (rows + 1) ) if ( RowSet = 0 & LineSet = rows ) RowSet += 1; newRowSet = (RowSet = 0) ? rows : RowSet - 1; newLineSet = (LineSet = rows) ? LineSet + 1; if ( iArraynewRowSetnewLineSet != 0 ) / there is already a number here! RowSet = (RowSet = rows) ? RowSet + 1; /RowSet += 1;

14、 else RowSet = newRowSet; LineSet = newLineSet; iArrayRowSetLineSet = +okNum; / print the = rows;, iArrayij); system( return 0;方法七:/*此程序可以运行到508阶魔方阵*/#define N (int)5 /*这里可以修改最大阶*/int i,k,c;int mNN=0;i=0; k=N/2; for(c=1;cN-1)i=0; k-; if(kN-1)k=0; %d 阶魔方阵:,N); for(k=0;,mik);方法八:/*此程序可以运行3阶到15阶奇数阵*/#define N 15int main(void)int

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1