算法
面具下的狰狞
这个作者很懒,什么都没留下…
展开
-
gcd
递归:#include<stdio.h>#include<string.h>int gcd(int n,int m);int main(){int i,n,m,j,k,l;while(scanf("%d %d",&n,&m)!=EOF){m=gcd(n,m);printf("%d\n",m);}}int gcd(int n,int ...原创 2018-11-20 21:46:04 · 177 阅读 · 0 评论 -
C++ sort 排序
在C++中所需头文件#include < algorithm >#include <iostream>#include <cstdio>#include <algorithm>using namespace std;int fun(int a,int b){ return a>...原创 2018-11-27 08:28:03 · 116 阅读 · 0 评论 -
二分(基础)
使用条件:在非递增或非递减的数列中使用问题:在一个数列中寻找某数字的下标输出:输出此数字的下标int main(){ int a[7]={1,3,5,7,9,17,19},l=0,r=6,mid; while(l<r) { mid=(l+r)/2; if(a[mid]<17) &n...原创 2018-11-29 08:34:45 · 101 阅读 · 0 评论 -
尺取(基础)
用于寻找一组数据中的优秀子序列,用如毛毛虫爬行的方式寻找子序列的方法就是尺取。问题:输入一组数据,寻找超过某个数的最小的子序列,并输出其个数。输出:若所有数据相加仍未超过此数,输出0;若超过,输出找个子序列中的数据个数。代码:#include<stdio.h>int main(){ int i,n,m,a[1000],b[100]={0},sum=0,j,k,l,m...原创 2018-11-24 17:32:02 · 227 阅读 · 0 评论 -
hash
标记,利用一个数组标记,标记原来数组的数据,较快运行,需要对原来数组操作时,可对标记数组进行调用。问题:找出一行字符中各个字母的个数,并按顺序输出代码:#include<stdio.h>#include<string.h>int main(){ char q[100001],m; int i,n,j,a[123]; while(gets(q)) { ...原创 2018-11-22 22:44:35 · 83 阅读 · 0 评论 -
前缀和
前缀和公式:ans[i]=ans[i-1]+a[i];问题:给定一个一维数组,求某范围内数组的和。输出:某氛围数组的和。代码:#include&lt;stdio.h&gt; int main() { int a[8]={1,2,3,4,5,6,7,8},b[8]={0},i,n,m; scanf("%d %d",&amp;n,&amp;m); for(i=n;i&lt;原创 2018-11-22 16:12:59 · 120 阅读 · 0 评论 -
快速幂求
原理:与快速乘法求余相同。#include<stdio.h>int fast(int a,int b,int c);int main(){ int a,b,c,m; scanf("%d %d %d",&a,&b,&c); m=fast(a,b,c); printf("%d",m);} int fast(int a,int b,int c){...原创 2018-11-21 16:12:54 · 89 阅读 · 0 评论 -
快速乘法求
原理:将数字转化为2进制读取,进行计算,提高速度。#include&lt;stdio.h&gt;int fast(int a,int b,int c);int main(){ int a,b,c,m; scanf("%d %d %d",&amp;a,&amp;b,&amp;c); m=fast(a,b,c); printf("%d&qu原创 2018-11-21 16:04:45 · 127 阅读 · 0 评论 -
异或典型应用
A^A=0A^0=A原创 2019-02-13 18:30:18 · 121 阅读 · 0 评论