自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 2021-07-10

5 数学问题 最大公约数 记住一个定理就可以了 a,b为正整数,那么gcd(a,b) = gcd(b,a%b) 利用递归即可,递归的边界为gcd(a,0) = a; 代码如下: int gcd(int a,int b){ return b!=0 ? gcd(b,a%b) : a; } 最小公倍数 最小公倍数的解法是 ab/gcd(a,b),把整数看成是因子乘积很容易理解了。 为了防止整数溢出,可以先除然后再乘。 int lcm(a,b){ return a/gcd(a,b) * b; } 分数的四

2021-07-10 23:01:39 75

原创 4.7 其他高效技巧和算法

打表 PAT A1101 从左往右遍历记录每个index上左边最大的值,从右往左遍历记录每个index上右边最小的值,最后从左往右遍历利用打好的表即可。 #include<iostream> #include<vector> using namespace std; int main(){ int n,count = 0; cin>>n; vector<int> leftMax(n),rightMin(n),a(n),ans(n); for(int i

2021-05-10 11:23:33 75

原创 4.6 双指针

1.有序数组中求两数之和等于特定数的问题 2.归并排序(递归和非递归实现) #include<iostream> using namespace std; const int maxn = 20; //注意把另外一个没有填完的数组归并后填上去 void Merge(int a[],int l1,int r1,int l2,int r2){ int i = l1,j = l2; int temp[maxn],index=0; while(i<=r1&&j<=r2

2021-05-10 11:17:39 52

原创 4.5 二分

二分查找 代码模板如下 #include<iostream> #include<vector> #include<algorithm> #include<iomanip> using namespace std; //经典二分查找 int binarySearch(int a[],n,quiry){ int left = 0; int right = n-1; int mid = (left + right)/2; while(left<=rig

2021-05-07 22:22:19 57

原创 4.4 贪心

用局部最优的策略来达到全局最优解的效果 简单贪心 PAT1020月饼 #include<iostream> #include<vector> #include<algorithm> #include<iomanip> using namespace std; struct yue{ double sale; double re; }; bool cmp(yue a,yue b){ return a.sale/a.re > b.sale/b.re;

2021-05-07 20:28:29 49

原创 4.3 递归

全排列 #include<iostream> using namespace std; const int maxn = 11; int n, output[maxn], hashTable[maxn] = {false}; void generate(int index){ if(index == n){ for (int i = 0; i < n;i++){ cout << output[i]; }

2021-05-06 21:53:43 59

原创 4.2散列

散列 将元素通过函数转化为一个整数,使得该整数尽量唯一的表示这个元素。 设计字符串散列函数 如果字符串只由大写字母或小写字母中的一种构成,则采用26进制即可,如果混合构成则采用52进制进行映射 其中 A - Z 为0-25 ,a - z 为26-51 代码如下: int hashFunc(char s[],int len){ int id = 0; for(int i = 0;i<len;i++){ if(s[i]>'=A'&&s[i]<='Z'){ id

2021-05-06 20:58:47 42

原创 4.1 排序

选择排序 就从左到右一直选择最小的到前面去 插入排序 从左到右把数插入有序数组 关于sort() 头文件 algorithm 参数 sort ( 起始地址 , 终止地址+1 , cmp (比较函数) ) 比较函数cmp的编写 考虑到我们需要按照自己想要的方式对数据进行排序,可以自定义比较规则。 bool cmp(node a,node b){ if(a.y==b.y) return a.x>b.x; return a.y>b.y; } 上述代码中 node表示数据类型,可以使基本数据int

2021-04-20 17:22:31 68

原创 3.6 字符串处理

字符串处理需要多想多积累多实践,下面列举书中的例题,以及以后峪道河字符串相关的题都直接放在这了。 PAT B1009 说反话 #include<iostream> #include<string> #include<vector> using namespace std; int main(){ vector<string> b; string a; while(cin>>a) //这里可以判断输入的末尾 b

2021-04-20 15:47:59 53

原创 3.5 进制转化

3.5 进制转化 进制转化 P进制数x转化为10进制数y x=a1a2...anx = a_1a_2...a_nx=a1​a2​...an​ y=a1∗Pn−1+a2∗Pn−2+...+an−1∗P+any=a_1*P ^ {n-1} + a_2*P^{n-2}+...+a_{n-1}*P+a_ny=a1​∗Pn−1+a2​∗Pn−2+...+an−1​∗P+an​ //先%10再/10从右到左提取x的每一位 int y = 0,product = 1; while(x != 0){ y += x%10

2021-04-20 15:10:40 82

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除