- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
自学考试《数据结构》各章复习要点总结.ppt
算法 #define m 10 #define n 10 void saddle ( int A[m][n]) /*求m行n列矩阵的鞍点*/ { int i,j,k,min; } 是否有缺陷? //O(m*(m+n)) for (i=0;im;i++ ) { } min= A[i][0 ]; j=0; for (k=1;kn;k++ ) if(A[i][k ] min) { min= A[i][k]; j = k ;} for (k=0; km; k++) if(k!=j ) { if(A[k][j ] min) break; } if(k==m) printf ( “\nA[%d][%d]是鞍点” , i, j) ; 算法 例子:若矩阵Amxn中存在某个元素aij满足:aij是第i行中最小值且是第j行列中的最大值,则称该元素为矩阵A的一个鞍点,试编写算法找出A中的所有鞍点。 算法二 用穷举法 :对每一个元素aij进行判别 1)i,j从第一行第一列开始; 2) 判断Aij是否是第i行中最小的, 若是转3), 否则转4); 3)判断Aij是否也是第j列最大的,若是则为鞍点,输出; 4)判断是否到了最后一个元素,若是退出,否则转2) 继续。 算法描述如下: 算法 #define m 10 #define n 10 void saddle ( int A[m][n]) /*求m行n列矩阵的鞍点*/ { int i,j,k,smin,smax; for (i=0;im;i++ ) for (j=0;jn;j++ ) { } } //O(m*n*O(A)) A(判断A[i][j]是否为鞍点) 算法 A(判断A[i][j]是否为鞍点) { k=0; while ( kn ) (A[i][k ] = A[i][j] ) k++; if (kn) smin=false; else smin=true; if ( smin ==true) { k=0; while (km) (A [k] [j]=A [i][j] ) k++; if (km) smax=false; else smax=true; } if ( smin==true smax==true ) printf ( “\nA[%d][%d]是鞍点” ,i,j) ; } //A=O(m+n) 是否有缺陷? 算法 例子:若矩阵Amxn中存在某个元素aij满足:aij是第i行中最小值且是第j行列中的最大值,则称该元素为矩阵A的一个鞍点,试编写算法找出A中的所有鞍点。 算法三 改进算法减少时间复杂度 1) 先将矩阵每行最小数和每列的最大数求出来,并存放在C[n]和B[m]两个一维数组中; 2) 对C[n]和B[m]的每对元素进行比较,若B[j]和C[i]相等,则A[i][j]一定是鞍点。 算法描述如下: 算法 void Saddle ( int A[m][n]) { int i ,j ,k; int B [n],C[m]; for ( i=0;im;i++ ) /* 求每行的最小数 */ { C[i]=A[i][0]; for ( j=1;jn;j++ ) if C[i]A[i][j] C[i]=A[i][j] } for (j = 0;jn;j++ ) /*求每列的最大数*/ { B[j] = A[0][j]; for ( i = 1;im;i++ )
文档评论(0)