算法
杂七杂八
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 · 236 阅读 · 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 · 144 阅读 · 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 · 1123 阅读 · 0 评论 -
单调栈与单调队列入门
## 单调栈stack: top指向最后一个数所在位置 后进先出例题:https://vjudge.net/problem/POJ-2796/origin大意:求一个区间 summin 最大的一个区间输入:63 1 6 4 5 2输出:603 5思路: 用pre[]数组储存各个1-i的区间值和,求出每个a[i]对应区间(该区间里它最小),之后令 a[i](pre[右]- pre[左])难点:找出每个a[i]对应边界–使用单调栈,后进先出的原则1:标记每个数的左右边界是本身 3原创 2021-02-24 23:40:21 · 150 阅读 · 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 · 58 阅读 · 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 · 97 阅读 · 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 · 57 阅读 · 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 · 124 阅读 · 0 评论