- 博客(48)
- 收藏
- 关注
原创 乘方取模计算(模幂计算)
乘方取模计算也称为模幂计算,在密码系统中经常使用,是不可缺少的。使用本程序可以解HDU2035,只需要考虑输入和输出。/* * 乘方取模 * * 已知给定的正整数a、n和m,计算x的值,a^n = x (mod m)。 * * 二分法用在这里也很有效果。 */#include long powermod(long a, long n, long m){
2016-04-18 08:03:38 3737
原创 ACM-ICPC竞赛算法类型
竞赛算法:数论算法组合算法计算几何图论算法网络流算法搜索算法字符串算法自动机博弈论模拟法六大算法:分治法贪心法动态规划法回溯法分支限界法遗传算法基础过程与算法:递归法递推法枚举法查找算法排序算法数据结构有关算法
2016-04-18 07:53:10 2715
原创 归并排序(分治法)
原始数据使用随机函数生成。 采用结构化程序设计,可以很容易改为从标准输入或文件读入数据,只需要修改函数getData即可。 数据个数由宏定义给出,也可以轻松地改为输入。排序时需要一个与数据规模相等的辅助存储。/* * * 归并排序算法程序 * */#include #include#include //#define DEBUG#define N 7void
2016-04-17 11:03:04 921
原创 试除法计算最小的N个素数
试除法求最小N个素数是一个经典的算法。可以使用素数分类的性质来加快计算的速度。除了2以外,素数只能是2n+1,n>=1。除了2、3和5以外,素数只能是6n+1或6n+5,n>=1。/* * 试除法计算最小的N个素数 * * 素数中除了2以外,均为奇数。 * 可以用试除法从奇数中挑选出最小的N个素数。 * * 另外,素数只可能是6n+1或6n+5,n>=1。 * 所有有
2016-04-16 18:39:59 1342
原创 快速排序(分治法)
原始数据使用随机函数生成。采用结构化程序设计,可以很容易改为从标准输入或文件读入数据,只需要修改函数getData即可。数据个数由宏定义给出,也可以轻松地改为输入。快速排序程序中,根据选定的基元(程序中是第一个元素),划分部分的逻辑比较复杂一些。在概率均等的前提下,基元选哪个元素都是一样的。/* * * 快速排序算法程序 * */#include #include
2016-04-15 13:47:01 1821
原创 计算最小公倍数LCM
这是数论算法中的基础算法程序。基于非递归的欧几里得算法求解最小公倍数。/* * 计算最小公倍数(Lowest Common Multiple,LCM) * 需要用到计算最大公约数的函数 * * 两个数的乘积等于这两个数的最大公约数与最小公倍数的积。 * 即(a, b)×[a, b]=a×b。 * (a, b)表示a和b的最大公约数,[a, b]表示a和b的最小公倍数。 *
2016-04-15 07:50:04 10980 3
原创 非递归求解N皇后问题(回溯法)
一般而言,回溯法可以是一种穷举法,适合于求解各种深度优先搜索的问题。回溯法是一种应用广泛的算法。其关键点是解空间树和n元组可行解的定义。该程序的结构可以用于很多求解问题,例如图的着色问题等。/* * 【问题描述】在一个8×8的国际象棋棋盘上放置8个皇后, * 要求每个皇后两两之间不“冲突”,即没有一个皇后能“吃 * 掉”任何其他一个皇后,简单的说就是没有任何两个皇后 * 占据棋
2016-04-14 22:02:13 5448
原创 最大公约数GCD的三种算法程序
这里给出使用欧几里得算法求最大公约数的递归和非递归的程序,同时给出穷举法求最大公约数的程序。从计算时间上看,递推法计算速度最快。程序中包含条件编译语句用于统计分析计算复杂度。/* * 计算两个数的最大公约数三种算法程序 */#include //#define DEBUG#ifdef DEBUGint c1=0, c2=0, c3=0;#endifint gcd1
2016-04-14 14:57:05 23403 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人