算法60学时第3章算法与数据结构课程介绍.ppt

算法60学时第3章算法与数据结构课程介绍.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
main( ) {int i,j, i1,j1,x,n,t,a[100][100]; print(“input an odd number:”); input(n); if (n mod 2=0) {print(“input error!”); return;} for( i=1;i=n;i=i+1) for(j=1;j=n;j=j+1) a[i][j]=0; i=1; j=int((n+1)/2); x=1; while (x=n*n) {a[i][j]=x; x=x+1; i1=i; j1=j; i=i-1; j=j-1; if ( i=0) i=n; if (j=0) j=n; if ( a[i][j]0 ) { i=i1+1; j=j1;} } for( i=1;i=n;i=i+1) {print(“换行符”); for(j=1;j=n;j=j+1) print(a[i][j]); } } 算法说明:若当前位置已经填有数的话,则应填在上一个数的下面,所以需要用变量记录上一个数据填入的位置,算法中i1,j1的功能就是记录上一个数据填入的位置。 算法分析:算法的时间复杂度为O(n2)。 作业 1.复习3.2节内容。 2.深入理解和掌握教材中的所有例题的算法。 3.第3章习题10,11。 4. 预习3.3节。 #includestdio.h main() {int i,j,k,m; int f[36]={5,7,4,8,9,1}; for(i=0;i=35;i++) scanf(%d,f[i]); if(i%6==0)printf(\n); printf(%2d,f[i]); for(i=5;i=1;i--) { k=f[5]; for(j=4;j=0;j--) f[j+1]=f[j]; f[0]=k; for(m=0;m6;m++) printf(%2d,f[m]); printf(\n); return 0; }} #include stdio.h int main() {int a[3][3]; int i,j,t; for(i=0;i3;i++) for(j=0;j3;j++) scanf(%d,a[i][j]); for(i=0;i2;i++) for(j=0;j2;j++) {if(a[i][j]=a[i][j+1]) t=j; else t=j+1; if(a[i][t]=a[1][t]a[i][t]=a[2][t]a[i][t]=a[0][t]) printf(鞍点为a[%d,%d]\n,i,t); else printf(没有鞍点\n); } } min=a[i][0]; t=0; //find the row min for(j=1;j=2;j++) {if(a[i][j]min) t=j; } 例1 【例1】求X,使X2为一个各位数字互不相同的九位数。 总是分析:只能用枚举法尝试完成此题。由X2为一个九位数,估算X应在10000——32000之间。 算法设计: 1)? 用一个10 个元素的状态数组p,记录数字0——9在X2中出现的情况。数组元素都赋初值为1,表示数字0——9没有被使用过。 2)? 对尝试的每一个数x,求x*x,并取其各个位数字,数字作为数组的下标,若对应元素为1,则该数字第一次出现,将对应的元素赋为0,表示该数字已出现一次。否则,若对应元素为0,则说明有重复数字,结束这次尝试。 3) 容易理解当状态数组p中有9个元素为0时,就找到了问题的解。但这样判定有解,需要扫描一遍数组p。为避免这个步骤,设置一个计数器k,在取x*x各个位数字的过程中记录不同的数字的个数,当k=9时就找到了问题的解。 main( ) {long x, y1, y2; int p[10], 2, i, t, k, num=0; for (x=10000;x32000; x=x+1) { for(i=0; i=9; i=i+1) p[i]=1; y1=x*x ; y2=y1; k=0; for(i=1; i=9. i=i+1) {t=y2 mod 10; y2=y2/10; if(p[t]=1) {k=k+1;

文档评论(0)

武神赵子龙 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档