算法
杂七杂八
Yolo.H
这个作者很懒,什么都没留下…
展开
-
变治法--高斯消去法
#include<iostream> #include<algorithm> #include<cstring> const int N=102; using namespace std; double a[N][N]; void merge(double a[N][N],int n){ int flag=0; //是否有为唯一解 for(int i=1;i<=n;i++){ //一列一列消元,遍历每一列,第n+1列不用 int max_row原创 2021-04-26 00:23:30 · 267 阅读 · 0 评论 -
约瑟夫斯问题--递归代码
#include<iostream> #include<algorithm> using namespace std; //suevior 存活人数 //value 特殊报数值 //n 第几次淘汰 //函数ysf返回第n次淘汰的人 int ysf(int survior,int value,int n){ if(n==1) return (survior+value-1)%survior; else return (ysf(survior-1,value,n-1)+原创 2021-03-30 00:48:23 · 174 阅读 · 0 评论 -
巴什博弈--Nim游戏
人机博弈 #include<iostream> #include<algorithm> #include<vector> #include<queue> using namespace std; const int N=10; int main() { //规则说明 printf("-----------规则说明------------\n"); printf("现有21根火柴。\n每次只能取走1~4根。\n取走最后一根火柴的人输\n\n");原创 2021-03-29 21:22:45 · 1160 阅读 · 0 评论 -
单调栈与单调队列入门
## 单调栈stack: top指向最后一个数所在位置 后进先出 例题:https://vjudge.net/problem/POJ-2796/origin 大意:求一个区间 summin 最大的一个区间 输入: 6 3 1 6 4 5 2 输出: 60 3 5 思路: 用pre[]数组储存各个1-i的区间值和,求出每个a[i]对应区间(该区间里它最小),之后令 a[i](pre[右]- pre[左]) 难点:找出每个a[i]对应边界–使用单调栈,后进先出的原则 1:标记每个数的左右边界是本身 3原创 2021-02-24 23:40:21 · 163 阅读 · 0 评论 -
拓扑排序
拓扑排序 #include<iostream> #include<algorithm> #include<vector> #include<queue> using namespace std; const int N=10; int main(){ int v,e,s,t; printf("顶点数: "); scanf("%d",&v); //输入v--顶点数 printf("边数: "); scanf("%d",&e)原创 2021-03-22 16:28:36 · 83 阅读 · 0 评论 -
取整
引:使用各种方式取整 大于0的小数 四舍五入取整 思路:加上0.5 取整数部分 #include<iostream> #include<algorithm> using namespace std; int main() { int n; float m; scanf("%f",&m); n=(int)(m+0.5); printf("%d",n); return 0; } 向下取整 思路:直接取整数部分 #include<iostream> #in原创 2021-03-14 14:14:56 · 125 阅读 · 0 评论 -
求最小公倍数
引:求数m,数n的最小公倍数 思路:最大公因数=两数相乘 ÷ 最大公约数 #include<iostream> #include<algorithm> using namespace std; int gcd(int m,int n) { if(n==0) return m; return gcd(n,m%n); } int lcm(int n,int m) { return (n*m)/(gcd(m,n)); } int main() { int m,n; cin&原创 2021-03-13 16:30:40 · 85 阅读 · 0 评论 -
求最大公约数
引:求数m,数n 的最大公约数 欧几里得算法: 思路:gcd(m,n)=gcd(n,m mod n) (1)如果 n = 0 ,返回 m 的值作为结果; 否则,进入第二步 (2) 令 r = m mod n (3) 令 m = n , n = r 连续整数检测算法 思路:从m,n中最小的数递减,一个个检查哪个数可以被m,n整除 (1)t = min(m,n) (2) x= m mod t, 如果x=0 ,进入第三步;否则,进入第四步 (3)y= n mod t,如果y=0,输出m 否则,进入第四步 (原创 2021-03-13 15:34:51 · 150 阅读 · 0 评论