今天做了4个简单的题,题目虽然是简单,但是对于我这样的小白,还是有很多东西需要学习的。

2的次幂表示

上面就是题目,题目说的也很清晰了,接下来就是递归的实现:

 #include<iostream>
using namespace std;
void puts(int n)
{
int i=,num=;
int a[] = {};
while()
{
if(n==) break;
int temp = n%;
if(temp!=)
{
a[num] = i;
num++;
}
i++;
n = n/;
}
for(i = num-; i >= ; i--)
{
if(a[i]==)
{
cout<<"2(0)";
}
else if(a[i]==)
{
cout<<"";
}
else if(a[i]>=)
{
cout<<"2(";
puts(a[i]);
cout<<")";
}
if(i!=)
{
cout<<"+";
}
} }
int main()
{
int n;
cin>>n;
puts(n);
return ;
}

关键是找到应该在哪里递归。

前缀表达式

我们之前说到过后缀表达式,实际上,前缀表达式更符合计算机运算规则。

 #include<iostream>
using namespace std;
void add(int a,int b)
{
cout<<a+b;
}
void sub(int a,int b)
{
cout<<a-b;
}
void mul(int a,int b)
{
cout<<a*b;
}
void div(int a,int b)
{
cout<<a/b;
}
int main()
{
char a;
int b,c;
cin>>a>>b>>c;
switch(a)
{
case '+':
add(b,c);
break;
case '-':
sub(b,c);
break;
case '*':
mul(b,c);
break;
case '/':
div(b,c);
break;
default:
break;
}
return ;
}

Anagrams问题

看到这个问题的时候,首先想到了之前学长教过的,要充分利用下标,最多有26个英文字母。我们开创两个数组,分别存放两个字符串,将英文字母在字母表中的顺序对应数组的下标,是个很不错的选择。

但是我第一次写的时候,使用的是char型数组,一个一个读入,最后发现运行超时,改用字符串读入方法,问题就得以解决了,这就提示我,以后遇到字符串问题,优先考虑字符串处理。

代码如下:

 #include<iostream>
#include<string.h>
using namespace std;
int trans(char a)
{
if(a>='a'&&a<='z')
{
return a-'a';
}
if(a>='A'&&a<='Z')
{
return a-'A';
}
}
int main()
{
int num1[]={};
int num2[] = {};
int flag = ;
char a[],b[];
/* while(1)
{
scanf("%c",&a);
if(a=='\n') break;
num1[trans(a)]++;
}
while(1)
{
scanf("%c",&a);
if(a=='\n') break;
num2[trans(a)]++;
} */
cin>>a;
cin>>b; for(int i = ; i < strlen(a); i++)
{
num1[trans(a[i])]++;
}
for(int i = ; i < strlen(b); i++)
{
num2[trans(b[i])]++;
}
for(int i = ; i < ; i++)
{
if(num1[i]!=num2[i])
{
flag = ;
cout<<"N";
break;
}
}
if(flag==)
cout<<"Y";
return ;
}

在主函数中有一点注释部分,这就是最初使用的方法。

出现次数最多的整数

设计两个数组,一个存放的就是输入的数据,另一个存放的是对应出现的次数。这里就需要考虑一下,有的数字重复出现,怎么样才能使其实现计数,并且将两个数组实现一一对应。

代码如下:

 #include<iostream>
using namespace std;
int main()
{
int num[] = {};//存放每个数字
int sum[] = {};//存放每个数字的个数
int n;
int i = ;
int j = ;
cin>>n;
for(i = ; i < n; i++)
{
cin>>num[i];
if(num[i]==num[i-])
{
sum[j-]++;
j--;
}
j++;
}
if(j!=)
{
int max = ;
for(int j = ; j < i; j++)
{
if(sum[j]<sum[j+])
{
max = j+;
}
}
cout<<num[max];
return ;
}
}

关键是这里:

【感想】简单题虽然称之为简单题,但是还是需要练习,绝对不能眼高手低,没有一次100%成功,就说明自己还是修炼不够,需要继续努力。从小处获取经验,慢慢积累,相信自己。

蓝桥杯算法训练_2的次幂表示+前缀表达式+Anagrams问题+出现次数最多的整数的更多相关文章

  1. Java实现 蓝桥杯 算法训练 2的次幂表示

    算法训练 2的次幂表示 时间限制:1.0s 内存限制:512.0MB 问题描述 任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001. 将这种2进制表示写成2的次幂的和的形式, ...

  2. Java实现 蓝桥杯 算法训练 出现次数最多的整数

    算法训练 出现次数最多的整数 时间限制:1.0s 内存限制:512.0MB 提交此题 问题描述 编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会 ...

  3. 蓝桥杯算法训练<一>

    一.图形显示 此题虽然简单,但是需啊哟注意的是,每个“*”后边有一个空格] 问题描述 编写一个程序,首先输入一个整数,例如5,然后在屏幕上显示如下的图形(5表示行数): * * * * * * * * ...

  4. Java实现 蓝桥杯 算法训练 猴子吃包子(暴力)

    试题 算法训练 猴子吃包子 问题描述 从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同:肉包每秒钟吃x个:韭菜包每秒钟吃y个:没有馅的包子每秒钟吃z个:现在有x1个肉 ...

  5. Java实现蓝桥杯 算法训练 大等于n的最小完全平方数

    试题 算法训练 大等于n的最小完全平方数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 输出大等于n的最小的完全平方数. 若一个数能表示成某个自然数的平方的形式,则称这个数为完全平 ...

  6. 蓝桥杯算法训练 java算法 表达式求值

    问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个表达式. 输出格式 输出这个表达式的值. 样例输入 1-2+3*(4-5) 样例输出 - ...

  7. java实现 蓝桥杯 算法训练 Password Suspects

    问题描述 在年轻的时候,我们故事中的英雄--国王 Copa--他的私人数据并不是完全安全地隐蔽.对他来说是,这不可接受的.因此,他发明了一种密码,好记又难以破解.后来,他才知道这种密码是一个长度为奇数 ...

  8. 蓝桥杯 算法训练 Torry的困惑(基本型)(水题,筛法求素数)

    算法训练 Torry的困惑(基本型) 时间限制:1.0s   内存限制:512.0MB      问题描述 Torry从小喜爱数学.一天,老师告诉他,像2.3.5.7……这样的数叫做质数.Torry突 ...

  9. 蓝桥杯 算法训练 区间k大数查询(水题)

    算法训练 区间k大数查询 时间限制:1.0s   内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. ...

随机推荐

  1. 导出CSV表格数据

    <?php class Csv{ //导出csv文件 public function put_csv($list,$title){ $file_name="CSV".date ...

  2. 关于Client_Abort_Exception异常的分析和解决

    1.什么情况下会出现“ClientAbortException:  java.net.socketException:  Broken pipe”? 答:客户端非正常(标准握手协议)退出连接,体现在h ...

  3. 如何使用mybatis对mysql数据库进行操作,batis的增删改查

    1.先下载Mybatis和mysql connecrt的jar包 下载地址: 链接: https://pan.baidu.com/s/1kVFfF8N 密码: ypkb 导入jar包,maven的话可 ...

  4. RADIUS and IPv6[frc-3162译文]

    如今项目中需要涉及到RADIUS及IPv6的使用,而网络中的资料相对较少,现对frc-3162进行中文翻译,分享出来. 由于英语水平有限,翻译不恰当的地方,还请提出,便于在下及时修改. 原文链接 这份 ...

  5. VB6获取Chrome地址栏的URL信息

    上篇写到了获取IE8浏览器URL的一般方法,那这篇就写下chrome的URL怎么获取.事实上,早期的chrome版本可以通过跟IE8差不多方式获取到URL信息.但是,现在chrome的控件都是Dire ...

  6. CodeM美团点评编程大赛复赛 做题感悟&题解

    [T1] [简要题意]   长度为N的括号序列,随机确定括号的方向:对于一个已确定的序列,每次消除相邻的左右括号(右左不行),消除后可以进一步合并和消除直到不能消为止.求剩下的括号的期望.\(N \l ...

  7. tp5实现邮件发送

    项目中,用户修改密码,需要发送验证码到用户邮箱,于是就看了看,在此记录一下. 1.开启SMTP服务 测试用的是自己的qq邮箱,首先需要开启邮箱的SMTP服务,开启之后,要记得给你的授权码,授权码一定要 ...

  8. dfs.datanode.max.transfer.threads

    An HDFS DataNode has an upper bound on the number of files that it will serve at any one time: <p ...

  9. .net 类型转换

    在.net  平台下类型有两种方式可以进行类型转换,强转或as转换.(有的说法是两种方式都进行强转,有两种强转方式). 如:typeA objA = (typeA)objB 或者使用另一种typeA ...

  10. 华为OJ之尼科彻斯定理

    题目详情: 验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和. 例如: 1^3=1 2^3=3+5 3^3=7+9+11 4^3=13+15+17+19 输入:一个整形数字 输出: ...