12 2013 档案
摘要:1. 怎样判断一个数是素数 最直接的判断某个正整数是否是素数的方法是考察这个数是否有小于它本身且大于1的约数,实际上只需考察它是否有大于1且不大于它的算数平方根的约数即可。 素数还有一个特点,就是除2以外,所有的素数都是奇数。 于是有如下C语言代码来判断一个正整数是否为素数: 1 int is...
阅读全文
摘要:题目来源 : 《编程之美》 2.12 快速寻找满足条件的两个数, Page 177 【问题描述】 快速找出一个长度为 N 的数组 A 中的两个数字,让这两个数字的和为一个给定的数字 S 。 【伪代码】 时间复杂度: O(N*logN) + O(N) = O(N*logN) 【形式化证明】 循环不变式
阅读全文
摘要:From :http://www.tsinsen.com/ViewGProblem.page?gpid=A1105问题描述 在一个地图上有N个地窖(N 2 3 #define M 12 4 5 typedef struct vector { 6 int len; 7 int data[M]; 8 } Vector; // 向量, 用来存储挖雷的顺序 9 10 11 int mine[M]; // mine[i] 表示第i个地窖中的地雷数,注意:这里i从0开始12 int mark[M]; // 标记,mark[i] 表示第i个地窖...
阅读全文
摘要:我们经常会遇到一些与求{1,2,...,n}的排列等价的问题。为了解决这些问题,我们需要生成{1,2,…,n}的全部排列或找出某一个特定的排列。本文介绍一些常见的排列生成算法,给出它们的C(或C++)实现。其中一些算法是根据已有经验编写的,其他的算法是在已知的经典算法的基础上略作改动得到的。 为了...
阅读全文