算法入门
th是个小屁孩
这个作者很懒,什么都没留下…
展开
-
字符和字符串输入输出
一、字符串的输入1、scanf输入:char name[81];scanf(“%s”,name);注意,不能用char *name;scanf(“%s”,name);因为这样声明的话,不知道name的值,即不知道name到底指向那块内存。 scanf输入时,会跳过前面所有空白字符,直到再次遇到空白字符才会结束输入,并在转载 2016-05-24 17:01:55 · 992 阅读 · 0 评论 -
ACM专栏(长期更新)
ACM 总结今天,决定特地为ACM各种算法开一个专栏,总结自己正在学习的各种算法,作为总结。持续更新。1. 算法基础最大公约数和最小公倍数 快速幂二分查找 2. 图和树 3. 刷题记录原创 2016-11-16 17:18:09 · 370 阅读 · 0 评论 -
算法篇——快速幂
今天介绍第二种算法,快速幂的使用,这个极大的方便了数值较大的数的之间的运算。快速幂取模假如我们要求a^b,而b是一个非常大的数的话,我们就可以用到快速幂的算法。这样复杂度不高,不会超时。假如求 a ^ n 次方我们可以把 n 表示为 2^k1 + 2^k2 + 2^k3….,可以证明所有数都可以用前式来表示。(其实就是二进制表示数的原理)那么 a^n = a^2^k1 * a^2^k2 * a^2原创 2016-09-15 10:11:23 · 319 阅读 · 0 评论 -
算法篇——入门级算法
从今天开始,复习各种算法,每天都会去理解一种算法,争取贴出自己对每种算法的理解,今天介绍的是最基础的入门算法,最大公约数,最小公倍数,快速幂(后面会重点介绍),简单并查集(后面会重点介绍),还有排列组合(后面会重点介绍)的算法。最大公约数和最小公倍数的算法原理最大公约数gcd的实现原理:欧几里德定理 若 a=b×r+q 则gcd(a, b) = gcd(b, q).欧几里德定理的证明 a =原创 2016-09-14 12:56:52 · 7138 阅读 · 0 评论 -
最短路径问题
此文转自博客园http://www.cnblogs.com/hxsyl/p/3270401.html文章特别好彻底弄懂最短路径问题 只想说:温故而知新,可以为师矣。我大二的《数据结构》是由申老师讲的,那时候不怎么明白,估计太理论化了(ps:或许是因为我睡觉了);今天把老王的2011年课件又看了一遍,给大二的孩子们又讲了一遍,随手谷歌转载 2016-08-05 10:29:11 · 665 阅读 · 0 评论 -
java大数解a+b
题目来源:2010年华中科技大学计算机研究生机试真题题目描述:实现一个加法器,使其能够输出a+b的值。输入:输入包括两个数a和b,其中a和b的位数不超过1000位。输出:可能有多组测试数据,对于每组数据,输出a+b的值。样例输入:2 610000000000000000000 1000000000000000000000原创 2016-05-21 14:29:58 · 708 阅读 · 0 评论 -
入门级算法——最大公约数 最小公倍数 快速幂 简单并查集 排列组合
这些算法非常简单,代码一看就懂,直接贴出来了。#include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace std;#define N 1009#define inf 0x0f0f0f0f//最大公约数int gcd(int a,int b){ if(b==0) re原创 2016-05-21 14:15:17 · 464 阅读 · 0 评论 -
筛素数
题目要求 素数是指除了1和本身以外不能被任何其他自然数整除的自然数。设计一个程序输入一个自然数,判断该数是否是素数,并筛出小于该数的所有素数。分析我们假设有一个数组存有1-N的所有数字 2 3 4 5 6 7 8 9 10 11 12 13 …………..N从2开始,将i的倍数去除,先除去2的倍数,结果如下 2 3 5 7 9 11 13 15 17 19 21 ……….N再去除3的原创 2016-05-19 19:37:48 · 286 阅读 · 0 评论 -
开根号的几类算法总结
二分法开根号首先是最基本的二分开根号,这个比较容易理解,复杂度比起下面讲的牛顿迭代法要高,更容易理解。 下面给出代码:#define eps 0.00001float SqrtByDichotomy(float n){ if(n<0) { return -1.0; } else { float low,up,mid,原创 2016-05-19 12:25:30 · 19345 阅读 · 0 评论 -
牛顿法解方程
题目要求:设计程序完成利用牛顿法解方程 xe^x-1=0分析:在设计程序之前,我们需要了解一下牛顿法的基本原理。设存在方程f(x)=0,已知方程的近似根为x(k),函数f(x)可展开,得到迭代公式下面提供牛顿法解方程的代码:#include<iostream>#include<cmath>using namespace std;double newtonF(double x){ r原创 2016-05-19 19:01:33 · 6805 阅读 · 1 评论 -
二分查找算法
二分查找算法总结典型的二分查找复杂度低的二分例子典型的二分查找给一个已经排序的已知的数组A[N],在最短的时间内找到其中的一个元素。下面给出最典型的二分查找算法。int BinarySearch(int A[],int l,int r,int key){ int m; while( l <= r ){ m = ( l + r ) / 2; if原创 2016-05-17 19:48:56 · 386 阅读 · 0 评论 -
leetcode题解 NO.1
题目Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the s...原创 2018-02-27 14:27:23 · 356 阅读 · 0 评论