算法
Vocal_map
这个作者很懒,什么都没留下…
展开
-
三种最短路径的算法(弗洛伊德(Floyd),SPFA,迪杰斯克拉(Dijkstra)) # 无讲解 #
弗洛伊德算法 Floyd算法,不允许所有权值为负的回路,可以求出任意两点间的最短距离 for(int k=1; k<=n; k++) for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) if(map[i][k]+map[k][j]<map[i][j]) ...原创 2019-08-08 15:47:46 · 452 阅读 · 0 评论 -
C++ 迭代器 二分查找
void func(int n, const vector<int>& t) { auto begin = t.begin(); auto end = t.end(); auto mid = t.begin() + (end - begin) / 2; while (mid != end && *mid != n) { if (n < *mid...原创 2020-04-01 23:12:37 · 492 阅读 · 1 评论 -
快速幂
#include <iostream> using namespace std; int ksm(int n,int m) { int ans=1; while(m!=0) { if(m & 1) // 如果m的二进制的最低位为1; { ans=ans*n; } ...原创 2020-06-08 17:56:46 · 131 阅读 · 0 评论 -
辗转相除 (gcd) 最大公约数
辗转相除 long long gcd(long long b,long long a) { if(a!=0)//其中b>a; { return gcd(a,b%a); } else { return b; } }原创 2020-06-12 09:28:59 · 188 阅读 · 0 评论 -
大数取余
int s=0; int len=strlen(str); for(int i=0;i<len;++i) { s=s*10+str[i]-'0'; s=s%11; }原创 2020-06-08 17:55:53 · 136 阅读 · 0 评论 -
素数筛选
void f() { int i,j,t=0; memset(is_prime,1,max); is_prime[0]=is_prime[1]=0; for(i=2;i<max;i++) { if(is_prime[i]) { for(j=i+i;j<max;j+=i) ...原创 2020-06-12 09:29:11 · 103 阅读 · 0 评论 -
strtok()分割字符串
#include <bits/stdc++.h> using namespace std; /*strtok() 用于分割字符串*/ char s[1050], a[1050][1050]; int main() { char *p; int i,k,j; while(gets(s)!=NULL) { if(s[0]=='#') bre...原创 2019-07-19 23:11:50 · 139 阅读 · 0 评论 -
坐标跳转
void gotoxy(int x,int y) { COORD pos; pos.X=x; pos.Y=y; HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);//获取坐标 SetConsoleCursorPosition(hOutput, pos);//修改坐标 }原创 2019-07-13 19:26:34 · 217 阅读 · 0 评论 -
LCM (最大公倍数)
int LCM (int a,int b) { return (a*b)/gcd(a,b); // 防止溢出 可以这样写 return a / gcd(a,b) *b; }原创 2020-06-12 09:28:45 · 211 阅读 · 0 评论