蓝桥杯算法训练_2的次幂表示+前缀表达式+Anagrams问题+出现次数最多的整数
今天做了4个简单的题,题目虽然是简单,但是对于我这样的小白,还是有很多东西需要学习的。
2的次幂表示
上面就是题目,题目说的也很清晰了,接下来就是递归的实现:
1 #include<iostream> 2 using namespace std; 3 void puts(int n) 4 { 5 int i=0,num=0; 6 int a[20] = {0}; 7 while(1) 8 { 9 if(n==0) break; 10 int temp = n%2; 11 if(temp!=0) 12 { 13 a[num] = i; 14 num++; 15 } 16 i++; 17 n = n/2; 18 } 19 for(i = num-1; i >= 0; i--) 20 { 21 if(a[i]==0) 22 { 23 cout<<"2(0)"; 24 } 25 else if(a[i]==1) 26 { 27 cout<<"2"; 28 } 29 else if(a[i]>=2) 30 { 31 cout<<"2("; 32 puts(a[i]); 33 cout<<")"; 34 } 35 if(i!=0) 36 { 37 cout<<"+"; 38 } 39 } 40 41 } 42 int main() 43 { 44 int n; 45 cin>>n; 46 puts(n); 47 return 0; 48 }
关键是找到应该在哪里递归。
前缀表达式
我们之前说到过后缀表达式,实际上,前缀表达式更符合计算机运算规则。
1 #include<iostream> 2 using namespace std; 3 void add(int a,int b) 4 { 5 cout<<a+b; 6 } 7 void sub(int a,int b) 8 { 9 cout<<a-b; 10 } 11 void mul(int a,int b) 12 { 13 cout<<a*b; 14 } 15 void div(int a,int b) 16 { 17 cout<<a/b; 18 } 19 int main() 20 { 21 char a; 22 int b,c; 23 cin>>a>>b>>c; 24 switch(a) 25 { 26 case '+': 27 add(b,c); 28 break; 29 case '-': 30 sub(b,c); 31 break; 32 case '*': 33 mul(b,c); 34 break; 35 case '/': 36 div(b,c); 37 break; 38 default: 39 break; 40 } 41 return 0; 42 }
Anagrams问题
看到这个问题的时候,首先想到了之前学长教过的,要充分利用下标,最多有26个英文字母。我们开创两个数组,分别存放两个字符串,将英文字母在字母表中的顺序对应数组的下标,是个很不错的选择。
但是我第一次写的时候,使用的是char型数组,一个一个读入,最后发现运行超时,改用字符串读入方法,问题就得以解决了,这就提示我,以后遇到字符串问题,优先考虑字符串处理。
代码如下:
1 #include<iostream> 2 #include<string.h> 3 using namespace std; 4 int trans(char a) 5 { 6 if(a>='a'&&a<='z') 7 { 8 return a-'a'; 9 } 10 if(a>='A'&&a<='Z') 11 { 12 return a-'A'; 13 } 14 } 15 int main() 16 { 17 int num1[26]={0}; 18 int num2[26] = {0}; 19 int flag = 0; 20 char a[81],b[81]; 21 /* while(1) 22 { 23 scanf("%c",&a); 24 if(a=='\n') break; 25 num1[trans(a)]++; 26 } 27 while(1) 28 { 29 scanf("%c",&a); 30 if(a=='\n') break; 31 num2[trans(a)]++; 32 } */ 33 cin>>a; 34 cin>>b; 35 36 for(int i = 0; i < strlen(a); i++) 37 { 38 num1[trans(a[i])]++; 39 } 40 for(int i = 0; i < strlen(b); i++) 41 { 42 num2[trans(b[i])]++; 43 } 44 for(int i = 0; i < 26; i++) 45 { 46 if(num1[i]!=num2[i]) 47 { 48 flag = 1; 49 cout<<"N"; 50 break; 51 } 52 } 53 if(flag==0) 54 cout<<"Y"; 55 return 0; 56 }
在主函数中有一点注释部分,这就是最初使用的方法。
出现次数最多的整数
设计两个数组,一个存放的就是输入的数据,另一个存放的是对应出现的次数。这里就需要考虑一下,有的数字重复出现,怎么样才能使其实现计数,并且将两个数组实现一一对应。
代码如下:
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int num[20] = {0};//存放每个数字 6 int sum[20] = {0};//存放每个数字的个数 7 int n; 8 int i = 0; 9 int j = 0; 10 cin>>n; 11 for(i = 0; i < n; i++) 12 { 13 cin>>num[i]; 14 if(num[i]==num[i-1]) 15 { 16 sum[j-1]++; 17 j--; 18 } 19 j++; 20 } 21 if(j!=0) 22 { 23 int max = 0; 24 for(int j = 0; j < i; j++) 25 { 26 if(sum[j]<sum[j+1]) 27 { 28 max = j+1; 29 } 30 } 31 cout<<num[max]; 32 return 0; 33 } 34 }
关键是这里:
【感想】简单题虽然称之为简单题,但是还是需要练习,绝对不能眼高手低,没有一次100%成功,就说明自己还是修炼不够,需要继续努力。从小处获取经验,慢慢积累,相信自己。
蓝桥杯算法训练_2的次幂表示+前缀表达式+Anagrams问题+出现次数最多的整数相关推荐
- 蓝桥杯-算法训练 2的次幂表示
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T235 问题描述 任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001. 将这种2进制 ...
- 蓝桥杯 算法训练 幸运的店家
蓝桥杯 算法训练 幸运的店家 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 炫炫开了一家商店,卖的货只有一个,XXX,XXX卖N元钱.有趣的是,世界上只有面值为3的幂的纸 ...
- 蓝桥杯 算法训练 Beaver's Calculator
蓝桥杯 算法训练 Beaver's Calculator 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator ...
- 蓝桥杯 算法训练 印章
蓝桥杯 算法训练 印章 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入输出: 一行两个正整数n和m 一个实数P表示答案,保留4位小数. 样例: 2 3 ...
- 蓝桥杯算法训练-24点(Python)
问题描述 24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13),你可以利用数学中的加.减.乘.除以及括号想办法得到24, ...
- 蓝桥杯——算法训练——数字三角形
蓝桥杯--算法训练--数字三角形 这道题不难,但是比较典型,可以作为动态规划(dp)的入门篇,属于线性dp(LIS,LCS和数字三角形都是此类题型). ------------------------ ...
- 蓝桥杯算法训练-强力党逗志芃
持续更新蓝桥杯算法训练题解,有兴趣可以关注一波呀 题目 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能.现在我们可以了解到,每个技能都有一个前提技能,只有学完了前提技能才能学习当前 ...
- 蓝桥杯 算法训练 逗志芃的危机
蓝桥杯 算法训练 逗志芃的危机 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃又一次面临了危机.逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了.现在她妹子要和 ...
- 蓝桥杯算法训练-过河马
蓝桥杯算法训练题解有兴趣的可以支持下. 题目 问题描述 在那个过河卒逃过了马的控制以超级超级多的走法走到了终点之后,这匹马表示它不开心了-- 于是,终于有一天,它也过河了! 由于过河马积累了许多的怨念 ...
最新文章
- 智能手机背面玻璃的缺陷检测,分割网络的应用
- 软件工程第一周开课博客
- android应用资源可以分为两大类,Android 应用资源(一)
- mysql 8重置root密码_如何在MySQL 8中重置root密码
- Python基于nginx访问日志并统计IP访问量
- Super Jumping! Jumping! Jumping! HDU - 1087
- React 等框架使用 index 做 key 的问题
- mysql 5.1升级5.6_mysql 5.1.71升级到5.6.30
- Netty工作笔记0084---通过自定义协议解决粘包拆包问题2
- FILE类型指针的头文件
- linux设置系统环境变量的天坑
- LINGO编程简介与实例
- xlsx文件损坏修复工具_野猫软件榜之文件修复工具
- 2.aop原理:@EnableAspectJAutoProxy
- 嘘——2021还没对象?你的虚拟女友已上线。
- b站视频怎么引流?b站做什么视频有流量?b站流量引流技巧
- 移动支付清算平台介绍
- 23考研计算机:天津理工大学
- dede php addfilter,织梦dede筛选功能+伪静态
- 2013年华北五省计算机应用大赛,我校学生在华北五省计算机应用大赛获得佳绩...