蓝桥杯算法训练
tbywt
码农
展开
-
蓝桥杯 BASIC-12 十六进制转化为八进制
问题描述 给定n个十六进制正整数,输出它们对应的八进制数。输入格式 输入的第一行为一个正整数n (1<=n<=10)。 接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式 输出n行,每行为输入对应的八进制正整数。 【注意】 输入的十六进制数不会有前导0,比如012A。 输出的八...原创 2019-12-16 17:02:56 · 378 阅读 · 0 评论 -
蓝桥杯 BASIC-11 十六进制转十进制
问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。样例输入FFFF样例输出65535题意:给定一个十六进制的数,转化成十进制的数输出。思路:用求得的已知数*16+每位上的值,是求十进制一种简单方法。不用从尾部开始求起。注意:这里的数超过int,所...原创 2019-12-18 19:44:26 · 377 阅读 · 1 评论 -
蓝桥杯 BASIC-10 十进制转十六进制
问题描述 十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。 给出一个非负整数,将它表示成十六进制的形式。输入格式 输入...原创 2019-12-18 19:07:50 · 254 阅读 · 0 评论 -
蓝桥杯 BASIC-9 特殊回文数
问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的。 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。输入格式 输入一行,包含一个正整数n。输出格式 按从小到大的顺序输出满足条件的整数,每个整数占一行。样例输入52样例输出899998989989998899数据规模和约定 1<=...原创 2019-12-18 18:46:15 · 200 阅读 · 0 评论 -
蓝桥杯 BASIC-8 回文数
问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。输出格式 按从小到大的顺序输出满足条件的四位十进制数。题意:求四位数的回文数思路:根据其此题特点,还有就是回文数的特点,呈现出i-j-j-i这样的数,根据其特点,组合出这样的四位数。代码:#include<iostream>using namespace...原创 2019-12-18 18:30:15 · 309 阅读 · 0 评论 -
蓝桥杯 BASIC-7 特殊的数字
问题描述 153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。输出格式 按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。题意:给定一个数,其每位的立方和等于自己,求这样的数思路:用i,j,k三个变量分别代表百十个位,从100遍历到999,i*i*i+j*j*j+k*k*k表示其每...原创 2019-12-18 18:10:23 · 104 阅读 · 0 评论 -
蓝桥杯 BASIC-6 杨辉三角形
问题描述杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。 下面给出了杨辉三角形的前4行: 1 1 1 1 2 1 1 3 3 1 给出n,输出它的前n行。输入格式输入包含一个数n。输出格式输出杨辉三角形的...原创 2019-12-18 17:08:47 · 298 阅读 · 0 评论 -
蓝桥杯 BASIC-5 查找整数
问题描述给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。输入格式第一行包含一个整数n。第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。第三行包含一个整数a,为待查找的数。输出格式如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。样例输入61 9 4 8 3 99样例输出2数据...原创 2019-12-18 13:01:18 · 203 阅读 · 0 评论 -
蓝桥杯 BASIC-4 数列特征
问题描述给出n个数,找出这n个数的最大值,最小值,和。输入格式第一行为整数n,表示数的个数。第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。输出格式输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。样例输入51 3 -2 4 5样例输出5-211数据规模与约定1 <= n...原创 2019-12-16 20:24:25 · 111 阅读 · 0 评论 -
蓝桥杯 BASIC-3 字母图形
问题描述利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。输入格式输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。输出格式输出n行,每个m个字符,为你的图形。样例输入5 7样例输出...原创 2019-12-16 20:07:30 · 126 阅读 · 0 评论 -
蓝桥杯 BASIC-2 01字串
问题描述对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:0000000001000100001100100请按从小到大的顺序输出这32种01串。输入格式本试题没有输入。输出格式输出32行,按从小到大的顺序每行一个长度为5的01串。样例输出00000000010001000011<以下部分省略>...原创 2019-12-16 17:43:21 · 140 阅读 · 0 评论 -
蓝桥杯 BASIC-1 闰年判断
问题描述给定一个年份,判断这一年是不是闰年。当以下情况之一满足时,这一年是闰年:1. 年份是4的倍数而不是100的倍数;2. 年份是400的倍数。其他的年份都不是闰年。输入格式输入包含一个整数y,表示当前的年份。输出格式输出一行,如果给定的年份是闰年,则输出yes,否则输出no。说明:当试题指定你输出一个字符串作为结果(比如本题的yes或者no,你需要严格按...原创 2019-12-16 17:17:36 · 156 阅读 · 0 评论 -
蓝桥杯 BASIC-13 数组排序
问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200输入格式 第一行为一个整数n。 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。输出格式 输出一行,按从小到大的顺序输出排序后的数列。样例输入58 3 6 4 9样例输出3 4 6 8 9题意:对数组的数进行排序,输出思路:使用c...原创 2019-12-16 17:07:22 · 148 阅读 · 0 评论 -
蓝桥杯 PREV-3 带分数
题意:要求使用1-9九个数字组合,并且满足条件:输入的数 = a+b/c,abc均是由1-9中的数组成且不能重复,1-9每个都使用且使用一次,问有多少种排列方式思路:此题就是一个全排列的问题,把1-9的排列分成a,b,c三段,满足条件即为带分数,可以使用stl库自带的next_permutation函数,此函数是一个全排列的函数,如果是最后一个排列,则返回false代码:#inc...原创 2020-03-05 23:41:27 · 183 阅读 · 0 评论 -
蓝桥杯 PREV-2 打印十字图
题意:给定一个数字,输出对应的十字图思路:把整个图分为6个部分来做,贴一张大佬的图:分为这么六个部分去做,首先打印中间的十字,然后打印其左上的,在打印右上的,在打印右下的,在打印左下的,最后打印第6个部分十字:左上角的:右上角的:右下角的:左下角的:最后第6部分代码:#include<iostream>u...原创 2020-03-02 11:40:10 · 163 阅读 · 0 评论 -
蓝桥杯 PREV-1 核桃的数量
题意:求三个数的最小公倍数并打印思路:刚开始的方法是依次求两个数的最小公倍数,最后判断是否能够整除第三个数,一直报错,后来看了网上的大佬,才明白思路有问题,其实只需要暴力搜索,从1开始,判断是否能够同时整除3个数即就是三个数的最小公倍数代码:#include <iostream>#include<algorithm>using namespace ...原创 2020-02-26 09:20:38 · 164 阅读 · 0 评论 -
蓝桥杯 ALGO-202 二进制数数
题意:求一个区间内所有数的二进制数的1有多少位数思路:先将其转化为二进制,因为只需要1的个数,所以可以先将其排序之后,通过下标的方式输出其1的位数。还有一个要注意的是1的位数可能超过int,使用long long 保险。代码:#include <iostream>#include<algorithm>#include<vector>usi...原创 2020-02-13 17:31:49 · 238 阅读 · 0 评论 -
蓝桥杯 ALGO-159 P0103
代码:#include <iostream>using namespace std;int main(int argc, char** argv) { char c; cin>>c; printf("%c",c+32); return 0;}原创 2020-02-13 16:20:54 · 111 阅读 · 0 评论 -
蓝桥杯 ALGO-156 表达式计算
题意:输入一个表达式,求其表达式的结果输入的是一个中缀表达式,所以我们需要将其先转化为后缀式,然后使用后缀式求其结果,有点类似于数据结构课上的那个表达式求值。思路:一.将中缀表达式转化为后缀表达式,首先判断是数字还是运算符,①如果是数字的话,我们需要判读是不是最后一个字符或者下一个字符不是数字的话,将字符和‘#’压入后缀栈,否则将该字符压入后缀栈。②如果是运算符的话,又分成三种...原创 2020-02-13 16:10:53 · 211 阅读 · 0 评论 -
蓝桥杯 ALGO-155 C++ CH08 01
题意:此题就是需要重载一下几个运算符而已,看了大佬的才知道,注意把friend去掉代码:std::ostream& operator<<(std::ostream& os, const zrf_Ratio& z){ os<<z.num<<"/"<<z.den; return os;}std::istre...原创 2020-02-12 17:32:26 · 130 阅读 · 0 评论 -
蓝桥杯 ALGO-150 6-1 递归求二项式系数值
题意:递归求其二项式代码:#include <iostream>using namespace std;int fun(int k,int n){ if(k==0||k==n){ return 1; }else{ return fun(k,n-1)+fun(k-1,n-1); }}int main(int argc, char** argv) { ...原创 2020-02-12 16:56:08 · 145 阅读 · 0 评论 -
蓝桥杯 ALGO-148 5-1最小公倍数
题意:求两个数的最小公倍数思路:首先求两个数的最大公因数,然后两个数分别除以其公因子,然后相乘,在乘以其公因子,就是其最小公倍数代码:#include <iostream>using namespace std;int gcd(int x,int y){//求最大公因数 return y==0?x:gcd(y,x%y); }int lcm(int x,i...原创 2020-02-12 16:48:30 · 129 阅读 · 0 评论 -
蓝桥杯 ALGO-142 P1103
题意:进行复数的运算,乘除法注意下即可。乘法:(a+bi)*(c+di),除法:(a+bi)*(c-di)/(c+di)*(c-di)原创 2020-02-12 16:39:24 · 147 阅读 · 1 评论 -
蓝桥杯 ALGO-137 Lift and Throw
题意:每个人只能进行一种操作,1.移动;2.将某人举起;3.将某人抛出,求怎样才能达到最远的距离,思路:此题需要全排列的问题,不懂的可以去百度一下,把每个人的动作映射的0-8的数字上面,i/3表示其人,i%3表示其执行的操作,对每种情况进行dfs(深搜)+回溯剪枝,大体思路是这样的。分不同的动作执行不同的操作。移动和抛出的情况大体差不多,主要先看后面有没有人,有的话就从其前面的一个位置进行...原创 2020-02-12 16:19:05 · 216 阅读 · 0 评论 -
蓝桥杯 ALGO-135 Multithreading
题意:假设有一组线程去执行一个函数,上面也提到了,thr[i]的意思是:i表示是第i个线程,thr[i]表示需要此线程执行该任务多少次,执行的函数里面包含两句话,所以thr[i]执行的总数为thr[i]*2,函数的表示的意思是:第一个是锁存住Y的值,第二个把锁存住的值进行+1。此题有点类似于多线程的问题,由于未进行同步,所以当完执行第一句话的时候,其他的线程也可能也在执行此函数,也保存了相应...转载 2020-02-11 20:04:58 · 266 阅读 · 0 评论 -
蓝桥杯 ALGO-133 Tricky and Clever Password
题意:题目的意思已经描述的很详细了,这里只作简要的说明,就是存在这样的一个字符串,A+pre+B+middle+C+suffix,我们要求的就是pre+middle+suffix的最大值。思路:最主要的思路就是枚举中缀的所有情况,用malacher算法求出以该节点的半径,那么middle就出来了,然后根据middle求pre+suffix,由于pre==suffix,类似于回文串的情况,但...原创 2020-02-11 00:20:54 · 290 阅读 · 0 评论 -
蓝桥杯 ALGO-131 Beaver's Calculator
题意:把所有的科学家的题目进行输入,要求使得释放资源最少,而且使得科学家所有输入的题目的相对顺序不能改变。出现逆序对的原因是对之前的资源处理时,%m,所以可能会出现逆序对的情况。对于前面一个问题,就是按照输入的题目优化后所得到的逆序对是最少的,而且每个科学家输入的题目相对顺序不能变。所以当把所有的题目合并的时候,优化后的最少逆序对就是所有科学家中逆序对数最多的逆序对数,因为在合并所有的题目的时...原创 2020-02-08 01:18:46 · 214 阅读 · 0 评论 -
蓝桥杯 ALGO-128 Cowboys
题目:简单说就是字符串中如果出现AB这样连着的字符,就要变成BA,而且此题要把字符串看成一个环形的来看思路:使用动态规划解决,dp[i][0],表示第i个节点没发生变化,dp[i][1],第j个第i个节点发生了变化。首先分析一下几种情况①当前节点为B,前面一个为A,即为AB,可以由ABB变化得来,还有就是BA变化不可能变化得到AB,可能会有老哥说存在(AAB->ABA这种情况是后...转载 2020-02-07 14:46:10 · 234 阅读 · 0 评论 -
蓝桥杯 ALGO-124 数字三角形
题意:给定一个数字三角形,求从顶部到底部的可以形成的最大的和,只能先左下角和右下角走。对应的三角形走法只能是向下和向右下角走。思路:此题也是一个递归的问题,从顶部开始,然后向下和向右下角走,所以得到的递推式为:d[i][j] = a[i][j]+max(sum(i+1,j),sum(i+1,j+1));//到底部时候就向上返回其结果,而且要加上当前的值。递归出口为:d【i】【j】>...原创 2020-02-05 19:58:00 · 199 阅读 · 0 评论 -
蓝桥杯 ALGO-122 未名湖边的烦恼
题意:有还鞋和借鞋两种人,求满足条件且不至于没鞋借的情况。思路:此题是一个递归的问题,需要将大问题转化为小问题,分解成两种情况,fangAn(m,n) = fangAn(m-1,n)+fangAn(m,n-1),最终将问题最简化,从递归出口终止。可以演算fangAn(3,2),粘贴大佬的演算过程。最终都是转化为了fangAn(1,0)、fangAn(0,1)了类似的,m<n...原创 2020-02-05 00:29:31 · 459 阅读 · 0 评论 -
蓝桥杯 ALGO-116 最大的算式
题意: 给定一组数据、乘法符号的个数和加法符号的个数,把这些加法和乘法符号添加各个数之间,求构成得到的最大的数思路:这题需要使用动态规划来实现。sum是保存的是前i个数的和,dp[i][j]保存的是i个数中j个*的总和。首先来推一下转移方程dp[i][0]表示的是前i个数有0个*号得到的值,即前i个数的和,也就是sum[i],dp[2][1] = dp[1][0]*num[2];...原创 2020-02-04 20:43:38 · 152 阅读 · 0 评论 -
蓝桥杯 ALGO-101 图形显示
代码:#include <iostream>using namespace std;int main(int argc, char** argv) { int n; cin>>n; for(int j=0;j<n;j++){ for(int i=0;i<n-j;i++){ if(i!=0)printf(" "); printf...原创 2020-02-04 00:43:41 · 144 阅读 · 0 评论 -
蓝桥杯 ALGO-97 排序
代码:#include <iostream>#include<algorithm>using namespace std;int main(int argc, char** argv) { int a[3]; for(int i=0;i<3;i++){ cin>>a[i]; } sort(a,a+3,greater<int...原创 2020-02-04 00:37:19 · 118 阅读 · 0 评论 -
蓝桥杯 ALGO-95 2的次幂表示
题意:输入一个数,递归输出其用2进制的表达形式,在递归中,只能允许出现2的0次和2的一次,所以是一个递归的问题。思路:搞清楚递归的形式,便可以解决此题,2(递归部分),第一次都没有+号,可以使用一个bool类型变量判断。代码:#include <iostream>#include<vector>using namespace std;vector&l...原创 2020-02-03 23:52:15 · 114 阅读 · 0 评论 -
蓝桥杯 ALGO-92 前缀表达式
代码:#include <iostream>using namespace std;int main(int argc, char** argv) { char c; int a,b; cin>>c>>a>>b; switch(c){ case '+':printf("%d",a+b);break; case '-':p...原创 2020-02-03 21:01:03 · 147 阅读 · 0 评论 -
蓝桥杯 ALGO-91 Anagrams问题
题意:求两个字符串相对应的字符个数是否相同思路:首先判断两个字符串的长度是否相同,不相同直接pass,长度都不同其字符的个数肯定不同,然后把两个字符串中的小写字符全部转化为大写,然后把26个大写字母映射到数组a和b上,a和b对应的位置就是对应的26个大写字母,全部一致就输出Y,否则N代码:#include <iostream>#include<string&g...原创 2020-02-03 20:53:33 · 151 阅读 · 0 评论 -
蓝桥杯 ALGO-90 出现次数最多的整数
题意:给定一组数据,求出出现次数最多的那个整数,如果有多个相同的,取值较小的。思路:首先,用map集合保存数字出现的次数,然后对map集合进行迭代,max保存出现次数最多的次数,ans保存的是值,当出现的值大于max或者等于max且值比当前的ans小时进行替换,最后输出ans注意:可能出现不输出的情况,所以最后要进行判断是否又输入,即n>0,输出ans代码:#inclu...原创 2020-02-03 16:39:33 · 273 阅读 · 0 评论 -
蓝桥杯 ALGO-87 字串统计
题意:给定一个字符串和数字n,求出长度大于等于n出现次数最多的字符串,如果有多个字符串,输出最长的,仍有相同的,输出第一个出现的。思路:首先用vector数组保存字符串的所有的字串,保存的字串是按先后顺序求出来的,当长度,出现次数相同时,在前面的一定是字串中先出现的,然后统计每个字串出现的次数,依次保存在book数组里面。最后求出满足条件的字串下标k,输出代码:#include&...原创 2020-02-03 14:51:13 · 210 阅读 · 0 评论 -
蓝桥杯 ALGO-86 矩阵乘法
题意:给定连个矩阵,然后求两个矩阵的乘积。思路:主要是考察矩阵的两个乘积的计算方法,可以看出求c(i,j)的时候用ans保存其结果,i表示最后矩阵的行数,j表示最后矩阵的列数,双重循环种嵌套了一个循环,可以看出计算的方法与用比计算矩阵的结果是一样的。代码:#include <iostream>using namespace std;int m...原创 2020-02-03 01:05:53 · 236 阅读 · 0 评论 -
蓝桥杯 ALGO-84 大小写转换
题意:把字符串的大写字母变成小写,小写变成大写,最后输出思路:主要是两个函数:isupper判断是否是大写字母,islower判断是否是小写字母代码:#include <iostream>using namespace std;int main(int argc, char** argv) { string str; cin>>str; for(...原创 2020-02-02 22:14:05 · 128 阅读 · 0 评论