
Algorithm
「已注销」
前后左右端工程师
展开
-
扩展Gcd含义及用途
扩展Gcd的用途:举个样例,一个人一次走 3步 或 5步 求他到 15步的所有方案:Gcd(3,5) = a*3 + b*5 还比如:Poj的青蛙约会公式:a*x+b*y = Gcd(a,b) = Gcd(b,a%b) = b*x+(a%b)*y = b*x+(a-a/b*b)*y = b*x+a*y-b*a/b*y = a*y+b*(x-a/b*y)根据上面的公式 我们可以得到:原创 2017-03-02 23:24:33 · 680 阅读 · 0 评论 -
插入排序
插入排序: 从第二个元素开始遍历,再与其前面的元素想比较,找到自己合适的位置。移动方式:输入排序:4 9 1 6 7 2 3 8 4 9 1 4 9 1 4 6 9 1 4 6 7 9 1 2 4 6 7 9 1 2 3 4 6 7 9 1 2 3 4 6 7 8 9 代码:#include <stdio.h> int num[1000];int main(){ int原创 2017-03-07 09:47:51 · 324 阅读 · 0 评论 -
十进制转换任意进制_CJ
#include<stdio.h>int main(void){ int i,n,r,x; char prt[1000],num[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; while(~scanf("%d%d",&n,&r)) { if(n<0)x=转载 2017-03-06 23:20:52 · 458 阅读 · 0 评论 -
大数运算_HDU
2016年12月29日,21:08:39#include<stdio.h>#include<string.h>int main(){ char a[1000],b[1000],c[1001]; int i,j=1,p=0,n,n1,n2; scanf("%d",&n); while(n--) { scanf("%s %s",转载 2017-03-05 16:02:50 · 506 阅读 · 0 评论 -
数塔_HDU
#include <stdio.h>#define max(a,b) a>b?a:b;int main(){ int n; scanf("%d",&n); int High; int i,j; int Ta[500][500]={0}; while(n--) { scanf("%d",&High); for原创 2017-03-05 15:52:53 · 557 阅读 · 0 评论 -
最大公约数与最小公倍数
#include <stdio.h>int gcd(int a,int b){ return b?gcd(b,a%b):a;}int lcm(int a,int b){//最小公倍数:a*b/gcd(a,b);//但最好写成 a/gcd(a,b)*b 因为这样 a*b 不会溢出! return a/gcd(a,b)*b;}int main(){ int a,b原创 2017-03-05 15:50:41 · 346 阅读 · 0 评论 -
汉诺塔算法解析
First declare the time:2017年2月17日13:26:35 Hanoi塔的初次接触,在大一上半年,那时想研究递归,看郝斌老师的视频,看到Hanoi塔,十分蒙圈。。 这几天,学长要求我们,看些基础算法视频,以便于开学讲 深搜,广搜,所以拿起研究这 Hanoi 研究其实很简单,从纸上,写下每一步的递归过程,以及结合主要的思路。Hanoi塔 也就这回事而已主要问题原创 2017-03-05 15:33:44 · 818 阅读 · 0 评论 -
位运算之快速幂
快速幂:利用二进制 对数据幂运算的一种高效算法 主要算法:对 整数的二进制位数 进行遍历 ,如果遍历到 1 临时值把结果乘上,如果遍历到 0,用临时变量跳过 举个例子:3的二进制是 11 最后一位为 1 , 进行 临时值与返回值 相乘,返回值为 3 ,临时值进行自乘运算 为 9,之后 N>>=1 右移一位 然后为第一位的 1 再次进行 临时值 与返回值 相乘 ,返回值 为原创 2017-03-02 22:23:38 · 1258 阅读 · 0 评论