经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C 语言 » 查看文章
关于二维数组的小技巧(未完待续)
来源:cnblogs  作者:刘名扬  时间:2019/3/13 9:00:52  对本文有异议

常常遇到这样的问题,求二维数组周边元素之和,求二维数组上三角元素之和等等,又或者会遇到这样的问题,构造一个二维数组让它的最外层是1,第二层是2……

在此笔者简单介绍几种本人遇到过的比较简略的算法,与大家分享之。

首先容易知道,一个二维数组a[m][n]实际就是m×n矩阵,那么诸多问题都可以从线性代数的角度去理解并加以解决。另一方面,矩阵的对称性也给了我们很多的思路。

Q1:求一个二维数组a[M][N]的周边元素之和

首先观察一个二维数组a[3][3]每个元素的下标(见表格1),容易观察到周边元素或者有0或者有2。那么是不是对N×N也有类似的结论呢?答案是肯定的。考虑N×N情况,第一行一定是行地址为0,第一列一定是列地址为0,而最后一行行地址则是N-1,最后一列列地址也是N-1,至此,我们已经可以找到解决表达周边元素的方法了。

因为周边元素必有一个地址是0或者N-1,同时也可以知道其他元素都不具备这样的特点(把周边元素全部遮挡起来,就变成一个N-1×N-1矩阵,此时的周边元素显然是原矩阵的1和N-2)

那么可以采用遍历的方法查找所有数组元素,再通过if语句去判断是不是具备周边元素的特点。

代码如下:

  1. char a[N][N];
  2. int i,j,sum;
  3. for(i=0;i<N;i++)
  4. {for(j-0;j<N;j++)
  5. {if(i==0||j==0||i==N-1||j==N-1)
  6. sum+=a[i][j];
  7. }
  8. }

而对于M×N矩阵,同理可得。

另一种想法则是用“减法”,遍历N×N矩阵的全部元素和,再减去N-1×N-1矩阵的元素和,得到的就是周边元素的,但是显然没有上面的方法好,故略去不谈。

 

表格1
0,0 0,1 0,2
1,0 1,1 1,2
2,0 2,1 2,2

原文链接:http://www.cnblogs.com/radius1/p/10517470.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号