算法
文章平均质量分 57
April_Winter
这个作者很懒,什么都没留下…
展开
-
哈夫曼树【北邮机试】
哈夫曼树机试常考类型,优先队列实现哈夫曼树的构建原创 2023-04-28 12:29:28 · 2210 阅读 · 1 评论 -
幂次方(贵大机试)+【快速幂详解】
快速幂基础详解,数论原创 2023-04-26 10:02:46 · 317 阅读 · 0 评论 -
【LeetCode】数组系列-双指针
双指针的一些例题原创 2022-11-15 11:26:55 · 884 阅读 · 0 评论 -
算法设计课程练习-贪婪
贪婪算法原创 2022-09-13 17:03:06 · 70 阅读 · 0 评论 -
算法设计课程练习-动态规划
动态规划汇总原创 2022-09-12 15:39:38 · 191 阅读 · 0 评论 -
算法设计课程练习-蛮力
蛮力法原创 2022-09-06 11:49:27 · 159 阅读 · 0 评论 -
算法设计课程练习-分治
分治法算法联系原创 2022-09-01 21:31:25 · 151 阅读 · 0 评论 -
括号匹配(北大、中大机试)
#include<bits/stdc++.h>using namespace std;int val[127];int n;int main(){ val['<'] = 1; val['('] = 2; val['['] = 3; val['{'] = 4;//定义括号优先级 cin >> n; while (n--) { stack <char> st;//定义栈 string s;原创 2022-03-20 09:44:48 · 879 阅读 · 1 评论 -
整除问题(上交机试)
题目描述:Time Limit: 1000 msMemory Limit: 256 mb给定n,a求最大的k,使n!可以被a^k整除但不能被 a^(k+1)整除。输入输出格式:输入格式:两个整数n(2<=n<=1000),a(2<=a<=1000)输出格式:一个整数.输入输出样例:输入样例:6 10输出样例:1思路分析:既然要求整除,说明每个素因子都是可以抵消的,这样我们就可以求解了(注意这里n!的素因数可以比a^k 多,但是必须包含a^k原创 2022-03-16 21:07:08 · 341 阅读 · 2 评论 -
贪心算法(浙大机试)
一、组队刷题(先来道简单的)某天,吴大佬准备和菜鸡Tirpitz一起组队刷题,聪明的吴大佬把题目分成了n个板块,每个板块有w[i]个题目,刷完这个板块需要消耗吴大佬m[i]的精力。吴大佬没有必要在一个板块死磕,/毕竟有咸鱼队友Tirpitz/。相反,如果他消耗m[i]%的精力时,他会解决这个专题w[i]%的题目,现在吴大佬想给聪明的你一个任务,让你计算吴大佬一共能做多少道题目?(没有a完就算成小数累加哦w/这个也算是吴大佬的贡献嘛/)输入输出格式输入描述:输入由多个测试用例组成,每个测试用例是有两原创 2022-03-06 11:34:17 · 632 阅读 · 0 评论 -
查找第K小数(北邮机试)
Time Limit: 1000 msMemory Limit: 256 mb查找一个数组的第K小的数,注意同样大小算一样大。 如 2 1 3 4 5 2 第三小数为3。输入输出格式输入描述输入有多组数据。每组输入n,然后输入n个整数(1<=n<=1000),再输入k。输出描述输出第k小的整数。输入输出样例输入样例62 1 3 5 2 23输出样例3此题有两种思路:①用普通数组对数据进行存储,然后sort排序再去重即可,代码如下:#include原创 2022-03-05 16:25:30 · 276 阅读 · 0 评论 -
字符串排序(北大机试)
编写一个程序,将输入字符串中的字符按如下规则排序(一个测试用例可能包含多组数据,请注意处理)。规则 1 :英文字母从 A 到 Z 排列,不区分大小写。如,输入: Type 输出: epTy规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。如,输入: BabA 输出: aABb规则 3 :非英文字母的其它字符保持原来的位置。如,输入: By?e 输出: Be?y输入输出格式输入样例A Famous Saying: Much Ado About Nothing (2012/8)原创 2022-03-05 10:48:34 · 291 阅读 · 0 评论 -
奇偶排序(贵大/兰大机试)
输入 n 个数进行排序,要求先按奇偶后按从小到大的顺序排序。输入描述:第一行输入一个整数 n,表示总共有多少个数,n<=1000。 第二行输入 n 个整数,用空格隔开。输出描述:输出排序之后的结果。输入样例:81 2 3 4 5 6 7 8输出样例:1 3 5 7 2 4 6 8本人利用这个题目来仔细总结以下sort函数,sort函数是STL中很常用的排序函数,其本质是封装好的快速排序函数,可以对最大30W个数进行排序,时间复杂度为nlogn。sort函数是不稳定的,如原创 2022-02-05 16:31:14 · 665 阅读 · 0 评论 -
删除字符串(贵大机试)
给你一个字符串S,要求你将字符串中出现的所有"gzu"(不区分大小写)子串删除,输出删除之后的S。就是说出现“Gzu”、“GZU”、“GZu”、"gzU"都可以删除。输入描述:输入一行字符串S,长度不超过100。输出描述:输出进行删除操作之后的S。输入样例:GzzGzukkgzUuu输出样例:Gzzkkuu**分析:**思路很简单,就是先把字符串全部转换成小写再进行模式匹配,删除对应的字串即可,但是实现方式不同。本人本来想利用STL库中的find和erase实现快速的查找和原创 2022-02-04 22:57:11 · 1001 阅读 · 0 评论 -
日期差值(上交机试)
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天输入描述有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD输出描述每组数据输出一行,即日期差值输入样例2011041220110422输出样例11分析:本题需要考虑三种情况:①同年(同月否?)计算②最后一年计算(同月否?)③中间间隔的完整年份的计算在解题时为方便字符串与数字之间的转换,本人用到了STL库的stoi函数将字符串快速转换成整数,在这里详细介绍一下相关的几个函数:原创 2022-02-03 22:24:11 · 1115 阅读 · 0 评论 -
旋转矩阵与蛇形矩阵
#include<bits/stdc++.h>using namespace std;//逆转90° void fun90(int a[100][100],int b[100][100],int n){ for(int i=0 ; i<n ; i++){ for(int j=0 ; j<n ; j++){ b[j][n-i-1] = a[i][j]; } }} //逆转180°void fun180(int a[100][100],int b[100]原创 2022-01-27 22:30:30 · 521 阅读 · 0 评论 -
负二进制转换
题目二进制转换的问题,想必大家都没有问题了吧,比如给你一个十进制数13,其对应的二进制表示为:1101。因为13=123+1*22+021+1*20.江鸟整天胡思乱想,现在他想到一个问题:如果将平时二进制转换过程中的基数2变成-2,那么转换过来的数将又是什么呢?江鸟将这种转换方式称为“负二进制转换”,为了让大家接受他的理论,他举了个例子如下:1*(-2)3+1*(-2)2+0*(-2)1+1*(-2)0=-3,所以-3的该种转换为1101.输入输出格式输入格式有多组测试数据。 输入为一个整数M.原创 2022-01-26 20:54:11 · 1227 阅读 · 0 评论 -
洛谷P2006 赵神牛的游戏
洛谷P2006 赵神牛的游戏题目描述在 DNF 中,赵神牛有一个缔造者,他一共有 kk 点法力值,一共有 mm 个技能,每个技能耗费的法力值为 a_i ,可以造成的伤害为 b_i,而 boss 的体力值为 n,请你求出它放哪个技能,才可以打死 boss。当然,赵神牛技术很菜,他一局只放一个技能,不过每个技能都可以放无数次。输入格式第一行有三个整数,分别表示 k,m,n。后面 mm 行,每行两个整数,第 (i + 1)(i+1) 行的整数表示耗费的法力值 a_i和造成的伤害 b_i。输出格式输原创 2021-02-01 22:03:17 · 243 阅读 · 0 评论 -
质数/素数
判断质数的方法总结质数定义:一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除。1、试商法(最简单的方法) :用i=2~m-1之间的整数去试商,若存在某个m能被1与m本身以外的整数i整除(即余数为零),则m不是质数。#include <iostream>#define MAX 100 using namespace std;int main() { int j; for (int i = 2; i <= MAX; i++) { for (j = 2;原创 2021-03-27 20:54:55 · 401 阅读 · 0 评论 -
判断回文方法总结
判断回文的方法总结1、数字判断法(仅针对数字):利用取余运算来反转数字,再与原数字进行比较,当数值较大时效率较低void huiwen(int i){ int y=i,num=0; while(y!=0) { num=num*10+y%10; y/=10; } if(num==i) cout<<num<<endl;} 2、全部/半部反转判断:对于数字和字符串皆可(若输入的是整型的数字,则可以通过stringstream来将其转换成字符串),利用函数r原创 2021-03-27 17:27:31 · 1770 阅读 · 3 评论 -
快速排序方法总结
快速排序快速排序的方法解析:①以最左边的数为基准数:i从左往右找比基准数更大的数,j从右往左找比基准数更小的数,双方都找到后就呼唤位置,直到相遇为止,将相遇的地方的数于最左边的基准数互换#include<bits/stdc++.h>#define N 100000using namespace std;int a[N];void quicksort(int left,int right)//快速排序 { int temp=a[left];//temp中装的就是基准数 int原创 2021-03-27 17:01:35 · 57 阅读 · 0 评论 -
木块问题
Uva 101 the block problem 木块问题题目大意:输入n,得到编号为0n-1的木块,分别摆放在顺序排列编号为0n-1的位置。现对这些木块进行操作,操作分为四种。1、move a onto b:把木块a、b上的木块放回各自的原位,再把a放到b上;2、move a over b:把a上的木块放回各自的原位,再把a发到含b的堆上;3、pile a onto b:把b上的木块放回各自的原位,再把a连同a上的木块移到b上;4、pile a over b:把a连同a上木块移到含b的堆上。原创 2021-02-28 17:25:49 · 233 阅读 · 0 评论 -
快速幂算法分析
有关数论中的快速幂算法分析法一:递归法:int qpow(int a,int b) {if(!b) return 1;else if (b & 1) return a * qpow(a,b-1);else { int t = qpow(a,b>>1); return t * t;}}递归的代价太大了!法二:快速幂分析:这个思维方式类似于二分法中的折半,不断使指数减半来降低复杂度。指数使偶数则折半,指数为奇数则提取出一个底数使得指数变成偶数再折半,原创 2020-12-10 13:45:59 · 266 阅读 · 0 评论