收藏 分享(赏)

acm程序算法模板.doc

上传人:cjc2202537 文档编号:174716 上传时间:2018-03-23 格式:DOC 页数:54 大小:221.50KB
下载 相关 举报
acm程序算法模板.doc_第1页
第1页 / 共54页
acm程序算法模板.doc_第2页
第2页 / 共54页
acm程序算法模板.doc_第3页
第3页 / 共54页
acm程序算法模板.doc_第4页
第4页 / 共54页
acm程序算法模板.doc_第5页
第5页 / 共54页
点击查看更多>>
资源描述

1、剑云雨啸 ACM 算法总结ACM 程序算法模板剑云雨啸 ACM 算法总结目录一、组合数学 .11.1、重复性全排列算法 .11.2、C(m,n) .11.3、无重复全组合 .21.4、大数相加 .3二、数论 .52.1、最大公约数 .52.2、乘方取余 .52.3、进制转换 .52.4、素数表 .62.5、素数表精简 .72.6、N 阶乘最后非 0 位 .72.7、约瑟夫环(不带路径) .82.8、约瑟夫环(带路径) .82.9、质因数分解 .92.10、判断是否为质数 .92.11、欧拉函数 .10三、数据结构 .113.1、最小代价生成树 普利姆算法 .11四、动态规划 .124.1、LI

2、S 最长不下降序列的算法 .124.2、交通最短路径算法 .144.3、数塔最大值算法 .154.4、最小代价字母树 .154.5、最长公共字串 LCS .164.6、可中断最长字串 .174.7、从数组中取定值 .184.8、最近点对 .194.9、24 点 .214.10、01 背包 极大界定 原始算法 .234.11、01 背包 极大界定 空间优化 .264.12、01 背包 恰好装满 附带组成 .274.13、01 背包 恰好装满 空间优化 .304.14、完全背包 恰好装满 买咖啡题 .314.15、完全背包 极大界定 原始算法 .334.16、背包扩展 等价匹配种数统计 .34五、

3、串 .355.1、KMP 算法 .35六、高精度算法 .366.1 通用函数 .36剑云雨啸 ACM 算法总结6.2、高精度加法 .376.3、高精度减法 .386.4、高精度乘法-高精度乘以低精度 .406.5、高精度乘法-高精度乘以高精度 .416.6、整型常量的阶乘 .416.7、整型常量的阶乘和 .426.8、高精度的乘方,幂数为整型常量 .426.9、高精度除法-高精度除以低精度,只产生余数 .436.10、高精度除法-高精度除以高精度,只产生余数 .44七、排序搜索 .457.1、插入排序 .457.2、堆排序 .467.3、合并排序(分治) .477.4、计数排序 .487.5、

4、冒泡排序 .497.6、快速排序 .497.7、二分搜索 .50八、技巧 .508.1、输入技巧 .508.2、递归 .518.3、位运算 .518.4、字典序 .518.5、省略末尾零 .51剑云雨啸 ACM 算法总结1一、组合数学1.1、重复性全排列算法#include #include using namespace std;int main()char s101;while(gets(s)int n=strlen(s);sort(s, s+n);puts(s);while(next_permutation(s, s+n)puts(s);return 0;1.2、C(m,n)int co

5、mbination(int m,int n)/m 为下标,n 为上标 if(m #define MAX_N 10int n, m; /输入 n 个数,其中本质不同的有 m 个int rcdMAX_N; /记录每个位置填的数int usedMAX_N; /标记 m 个数可以使用的次数int numMAX_N; /存放输入中本质不同的 m 个数void unrepeat_combination(int l, int p)int i;for (i=0; i 0) /若还可以用,则usedi-; /可用次数减 1rcdl = numi; /在 l 位置放上该数unrepeat_combination(

6、l+1, i); /填下一个位置usedi+; /可用次数恢复int read_data()int i, j, val;if (scanf(“%d“, m = 0;for (i=0; i#include#define max 1000int nummax;char charAmax;char charBmax;char charCmax;void numsum(char charA,char charB,int num) /两个要相加的数和最后的结果保存的数组,并且结果存放在 C 中memset(num,0,sizeof(num);int lengthA=strlen(charA);int l

7、engthB=strlen(charB);int lengthC=lengthAlengthB?lengthA:lengthB;int i,j;int k=lengthC-1;i=lengthA-1;j=lengthB-1;while(i=0k-;j-;i-;剑云雨啸 ACM 算法总结4while(i=0)numk=charAi-48;k-;i-;while(j=0)numk=charBj-48;k-;j-;for(i=lengthC-1;i0;i-)numi-1=numi-1+numi/10;numi=numi%10;for(i=1;i1,k);t=(t*t)%k;if(n%2=0)retu

8、rn t;return (t*a)%k;2.3、进制转换/10?其他int trans(int n,int d,char s) /数值 n,转换成 d(2-16)进制表示的字符串 sstatic char digits=“0123456789ABCDEF“;char buf20;int j,i=19;if(d16)s0=0;return 0;剑云雨啸 ACM 算法总结6bufi=0;dobuf-i=digitsn%d;n/=d;while(n);for(j=0;(sj=bufi)!=0;i+,j+);return j;/其他?10int n2ten(char *x,int n)/其它进制转化成

9、十进制char *a;int i,j,s=0,m=1;for(i=0;xi;i+);a=(char *)malloc(i+1)*sizeof(char);ai=0;for(j=0,i-;i=0;i-,j+)aj=xi;for(j=0;aj;j+)29s+=(int)(aj-0)*m;m*=n;return s;2.4、素数表bool primes100000001; void makeprimes() /素数表的产生,false 是素数,这里 0,1,2,3 默认是。可自己改动memset(primes, 0, sizeof(primes);int i,j;for(j = 4; j =0; i-)c = c*10+ai, ai = c/5, c%=5;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 教育学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报