编程小妙招:取模
来源:互联网 发布:手机金山恢复数据恢复 编辑:程序博客网 时间:2024/04/27 03:34
数学中的取模运算大家都是知道的,现在说下自己利用这个运算的一些体会。
首先,取模可以在一定程度上取消边界检查。
举个例子吧,假设要在一个100x100的平面网格上实现生命游戏(game of life,一个数学游戏)的模拟,每个网格代表一个小细胞生命。在按照一定规则不断演化的过程中,细胞生命是必然会遇到边界的。我们是不是要加上if这样的判断来确定细胞生命是不是到了边界呢?如果没有这个检查的话,超出网格的操作就是非法的了。其实我们只需要简单地利用取模运算,就能避免这一问题。
用
int up = ( x_pos - 1 + row ) % row;
int down = ( x_pos + 1 + row ) % row;
int left = ( y_pos - 1 + col ) % col;
int right = ( y_pos + 1 + col ) % col;
算出一个在(x_pos,y_pos)处的细胞的上下左右的位置,这样完全避免了麻烦的判断。不过,这样处理之后,整个网格就是没有边界的一体的了,就像地球表面,一直向东走,最后却是从西边出来。正如走到最左边的细胞会从最右边出来一样。
其次,取模可以在循环中排除一列元素中的一个。
还是举例说明,考虑计算N阶矩阵的行列式大小的算法,可以用的是对矩阵的第一行按代数余子式展开。那么考虑第一行的第 i 个元素处的代数余子式,它是由1~i-1的列和i+1~N的列以及2~N的行组成的一个子行列式,就是说第一行和第 i 列的元素要被排除,那么我们可以利用
for( i = 0;i < N;++i)
for( j = i + 1;j!=i;j = (j + 1 + N)%N)
{
//计算代数余子式
}
关键就在 j = (j + 1 + N)%N,它使循环从 i+1 进行到 N,然后从 0 到 i-1。
- 编程小妙招:取模
- 小妙招
- 生活小妙招
- 养生小妙招
- 办公室减肥小妙招
- 保护电脑小妙招
- 移动硬盘分区小妙招
- 生活小妙招
- 饮食减压小妙招
- 禁用U盘小妙招!
- 快速除甲醛小妙招
- 祛雀斑简便小妙招
- 祛除黄褐斑的小妙招
- 短路或的小妙招
- 60个生活实用小妙招
- 防止衣物褪色的小妙招
- IT族室内锻炼身体的小妙招
- IT族室内锻炼身体的小妙招
- EXCEL导入ORACLE
- cegui实现帧动画
- 技术
- JavaScript字符串中的字符数组
- 使用Excel时出现System.Data.OleDb.OleDbException: 找不到可安装的 ISAM错误。
- 编程小妙招:取模
- 插入排序
- [下载]黑莓BlackBerry开发官方文档系列
- C# 资源释放
- 打工和创业那个更合算?
- 酷6网证实80后员工猝死 内部邮件详解死因
- [下载]BlackBerry应用程序开发教程和实例
- 二叉树 create addnew
- Domino在非Windows平台运行时,关于ulimit更改