算法
海上飞棚
这个作者很懒,什么都没留下…
展开
-
快速幂
快速幂(Fast Exponentiation Algorithm)公式基础公式:(a*b)%m = [(a%m)*(b%m)]%m快速幂需要用到的扩展公式:1.ababa^b当b = 偶数的时候ababa^b = (a2)b2(a2)b2{(a^2)}^{\frac{b}{2}}2.ababa^b当 b = 奇数的时候ababa^b = (a2)b2∗a(a2)b2∗a...原创 2018-03-30 08:49:35 · 114 阅读 · 0 评论 -
斐波那契数列的第N项
斐波那契数列的第N项 51Nod - 1242斐波那契数列的定义如下:F(0) = 0F(1) = 1F(n) = F(n - 1) + F(n - 2) (n >= 2)(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, …) 给出n,求F(n),由于结果很大,输出F(n) % 1000000009的结果即可。 ...原创 2018-04-12 09:24:54 · 914 阅读 · 0 评论 -
用库函数来实现全排列
用库函数来实现全排列next_permutationint num[10] = {1,2,3,4,5,6,7,8,9,0};do{ for(int i = 0; i < 10; i++) { cout << num[i] << " "; } cout << endl;}while(nex...原创 2018-03-29 15:25:10 · 782 阅读 · 0 评论 -
二分
为了优化算法的时间复杂度,学习一下二分还是很有必要的,今天再次把二分看了看,总结了下面几点1.通过二分来找一个单调递增数组里面的某个值在哪一位(为了简化问题,在这里声明数组是一个单调递增的)#include <iostream>using namespace std;int main(){ int a[] = {1,3,5,7,8,9,10,12,23,34,55,6...原创 2018-03-29 13:59:21 · 129 阅读 · 0 评论 -
第几是谁?
第几是谁?描述 现在有”abcdefghijkl”12个字符,将其按字典序排列,如果给出任意一种排列,我们能说出这个排列在所有的排列中是第几小的。但是现在我们给出它是第几小,需要你求出它所代表的序列.输入第一行有一个整数n(0<n<=10000)(0<n<=10000)(0...原创 2018-04-03 08:47:26 · 128 阅读 · 0 评论 -
整数划分
整数划分1.将一个正整数n划分成多个不大于m的整数m是任意的dp[i][j] = dp[i-j][j] - dp[i][j-1]m是互不相同的2.将一个正整数n划分成不多于m个正整数m是任意的dp[i][j] = dp[i-1][j-1] + dp[i-j][j]m是互不相同的#m是奇数整数划分1.将一个正整数n划分成多个...原创 2018-04-02 12:36:13 · 194 阅读 · 0 评论 -
最短路(Dijkstra算法---HDU 2544 水题 模板)
最短路Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?Input输入包括多组数据。每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示成都的大街上有几个路...原创 2018-04-14 15:04:47 · 247 阅读 · 0 评论 -
我排第几个
我排第几个描述 现在有”abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说出这个排列在所有的排列中是第几小的?输入第一行有一个整数n(0<n<=10000)n(0<n<=10000)n(0X=am∗(n−1)!+a(m−1)∗(n−2)!+...+ai∗(n−1)!+...+a2∗1!+a1∗0!X=am∗(n−1)!...原创 2018-04-01 15:47:53 · 316 阅读 · 0 评论 -
三点顺序
三点顺序描述 现在给你不共线的三个点A,B,C的坐标,它们一定能组成一个三角形,现在让你判断A,B,C是顺时针给出的还是逆时针给出的?如: 图1:顺时针给出 图2:逆时针给出 输入每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别表示A,B,C三个点的横纵坐标。(坐标值都在0到10000之间) 输入0 0 0 0 0 0表示输入结束 测试数...原创 2018-04-01 15:35:23 · 428 阅读 · 0 评论 -
计算阶乘n!末尾0的个数
一、问题描述 给定一个正整数n,请计算n的阶乘n!末尾所含有“0”的个数。例如: 5!=120,其末尾所含有的“0”的个数为1; 10!= 3628800,其末尾所含有的“0”的个数为2; 20!= 2432902008176640000,其末尾所含有的“0”的个数为4。二、算法分析此类问题很显然属于数学问题,一定要找到其中的本质规律才能得到正确的数学模型。...原创 2018-03-31 15:08:24 · 4215 阅读 · 0 评论 -
汉诺塔hanoi
递归汉诺塔这个递归的例子已经见过好多次了,但是每次遇到的时候,或多或少都出过bug,现在来总结一下,以便后面会用到#include <iostream>using namespace std;void hanoi(int n,char here, char temp, char there){ if(n == 1) { cout &...原创 2018-03-31 10:30:14 · 141 阅读 · 0 评论 -
贪心的经典算法讲课笔记
贪心的经典算法贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所作出的是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须是具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前的状态有关。贪心算法具有最优子问题的结构,它的特点是“短视”,每次选择当前局面最有...原创 2019-01-20 18:25:37 · 361 阅读 · 0 评论