❶ 蓝桥杯省赛(C语言)一般考什么
还是跟选拔赛一样的题型
考的是算法类的题目
❷ 算法训练 操作格子 用java写 ,蓝桥杯上的一题。请注意别超时!
dty@ubuntu:~$ cat Zhi.java
importjava.util.*;
publicclassZhi
{
publicstaticvoidmain(String[]args)
{
Scanners=newScanner(System.in);
intn=s.nextInt();
intm=s.nextInt();
inta[]=newint[n];
for(inti=0;i<n;i++)
{
a[i]=s.nextInt();
}
intp,x,y;
for(inti=0;i<m;i++)
{
p=s.nextInt();
x=s.nextInt();
y=s.nextInt();
if(p==1)
{
a[x-1]=y;
}
if(p==2)
{
intsum=0;
for(intj=x-1;j<y;j++)sum+=a[j];
System.out.println(sum);
}
if(p==3)
{
intmax=a[x-1];
for(intj=x-1;j<y;j++)max=a[j]>max?a[j]:max;
System.out.println(max);
}
}
}
}
dty@ubuntu:~$ javac Zhi.java
dty@ubuntu:~$ java Zhi
4 3
1 2 3 4
2 1 3
6
1 4 3
3 1 4
3
❸ 蓝桥杯的算法题k好数是什么意思,完全不明白要干什么,不要代码,解释这题是干吗的
就是要你求满足以下条件的序列的个数
1.有L个数
2.每个数在0到k的范围内
3.相邻的数差不等于一
4.第一个数不是0
方法就是递推,f[i][j]表示共i位最后一位为j时的方案数。
❹ 蓝桥杯上的一题,题目为排列数,用了暴力算法超时,请问该怎么处理,谢谢!
不用担心的,看看别人是怎么学习单片机的,加油。 最近论坛上发了一个连载帖子——吴鉴鹰单片机实战项目精讲,因此受到不少网友的关注,在这里吴鉴谢谢各位网友的支持、关心和信任。 在帖子中留了几个群号,有两千多读者加了群,通过QQ向我询问了很多问题,如果在工作不是太忙的时候我看到了就会回答,但是有时候做项目太忙就没时间解答。 为此,在这里应群内成员以及一些网友的要求,专门写一篇文章来针对这些问题做一个总结。希望能为大家的疑惑有一点点帮助就足以。不足之处,也希望大家客观指出,君子和而不同。 1、学习单片机有用吗? 有很多初学者有这样的困惑,单片机初学者感觉入门很难,学着学着,就会产生这样的疑问——自己辛辛苦苦学习单片机,将来有用吗? 单片机只是一个工具,重要的还是思想,有了自己的想法,电子行业地域辽阔,随便你闯。单片机这个切入点入手还是不错的,可以让你尽快进入电子殿堂的大门,如果你还在上学,不要眼睛里面只盯着暂时的薪水,哪怕是毕业两三年的也一样。重要的是掌握程度和对技术的理解程度,有句话叫“水到渠成”,到时候再去研究工资的事情也不晚。 2、学习嵌入式编程有必要从51单片机开始吗? 我原本来在读大学的时候,有很多同学听说学习ARM很牛逼,于是就跑到图书馆借了一两本关于ARM的书,学一两天后发现跟自己想的不太像,于是学着学着就慢慢放弃了。所以我总结一下,与其迈很大的步子,不如放慢脚步一步步走。从最基本的做起,一步步走,等单片机学会之后再进行像ARM,DSP之类高端处理器的运用,也就能得心应手了,如果想一口吃成一个胖子,只怕最后没胖起来,倒把自己给噎死了! 3、会用高端处理器就牛了吗? 不少网友问我:是不是学会了ARM、嵌入式操作系统就会很牛?是不是单片机就是运用在低档产品上,ARM做出来的产品就高端了。 首先,从本质上说,是同一类东西,都是嵌入式应用方面的主力。十八般兵器,没有优劣之分,只是在乎持兵器的人修为高低,当年解放军凭借小米加步枪不也取得了抗战胜利。 微处理器,单片机、DSP、FPGA、ARM,每一种都有自己的侧重点,都具备自己的优势和劣势。 单片机:技术比较成熟,运用在工控领域比较多,但进行嵌入式应用显得太庞大,因而派生出ARM单片机进行高端应用,可以进行操作系统的移植,但是现在一些高端单片机也可以移植操作系统,单片机跟ARM并没有什么本质的区别。 DSP:是数据处理的缩写。也可以做控制运用,它的优势是运算,主要用在运算量大的领域,如数字信号处理,图像处理,视屏处理,导弹雷达上也等等。如果要用的好,需要学会很多高深的算法,需要有较强的数学功底。 FPGA:可编程逻辑阵列的缩写。实际上就是做一个芯片,用软件实现它的内部连接,达到用软件的方法实现硬件的目标。是用硬件实现的一种方法。是早期单片机(功能简单的逻辑应用)的现代实现方法。 总结:一个嵌入式软件工程师,其实核心竞争力不是你会运用什么芯片,当你会了一两种以后,再学其他的,就会觉得很容易了。一个真正的有竞争力的工程师,应该是具备良好的编程习惯,编程思路,还应该具备扎实的数学功底。只有把握核心的东西,才能走的更远。 4、单片机行业技术研发有前途吗? 这也是初学者最为关心的一个话题,单片机行业的技术研发将来前途如何? 着名的高尔夫球手,老虎伍兹说过一句话:我只需成为高尔夫数一数二的高手,钱自然会追着我来。 单片机技术研发,也就是一个类型的职业岗位,同样叫做“单片机工程师”,能力、经验、学历,参差不齐,因此待遇肯定也不尽相同。 高待遇者,年薪数百万也有,低收入者,养家糊口都难。 只有倒闭的企业,没有倒闭的行业! 不是行业没有前景,只能反思自己为何没有足够的优秀。 5、单片机技术研发太苦太累,值得去坚持吗? 在论坛里看到很多人在抱怨:现在电子行业的研发做起来太累,待遇又不是很好,感觉没什么出路。 既然我们选择了单片机行业,就坚持做下去,不要轻信别人讲的:单片机研发工程师没有前途,太苦太累。 学好单片机你至少可以找一份技术性的工作,就算目前累一点,至少你可以看到希望,随着自己经验的积累,未来的路会越走越宽!至少可以坐在办公室里面,有自由的时间可以支配。 你知道那种专业课没学好,只能去车间做一线工人的感觉吗?坐在车间里像一个机器人一样每天重复同样的工作吗?你喜欢过那种一点自由都没有,在流水线上忙碌着,连上厕所时间都没有的工作吗?我相信没有人喜欢! 所有不要被一些工作了几年的工程师的话语所迷惑,说做技术很苦,拿的钱又少,当你真正有一天想去做技术,发现原来因为自己缺少知识的积累,没有公司愿意要你。 简单地分享了自己对单片机领域一些问题的看法,欢迎同行积极分享自己的心得,能让更多初学者少走弯路,摆正心态进行单片机的学习。
❺ 算法训练 2的次幂表示(蓝桥杯C++写法)
这里用了递归的算法,具体思路是:将输入的数b先拆分成2的n次幂的和,再将各个幂次方(即指数)拆分成2的n次幂的和……知道幂次方为0或1为止。很明显,这是函数递归的思想。
大佬的思路是,先判定b是否满足要求(幂次方为1或0),如果是,输出2(0)或2,如果不是,从最接近b的2的n次方开始分解,分解完再减去2的n次方,再从剩下的数中开始分解......直到满足要求为止。
❻ 蓝桥杯算法训练 java算法 表达式求值
这两天看到的内容是关于栈和队列,在栈的模块发现了Dijkstra双栈算术表达式求值算法,可以用来实现计算器类型的app。
编程语言系统一般都内置了对算术表达式的处理,但是他们是如何在内部实现的呢?为了了解这个过程,我们可以自行搭建一套简易的算术表达式处理机制,这里就用到栈特性和本篇提到的Dijkstra算法。
概述:
算术表达式可能是一个数、或者是由一个左括号、一个算术表达式、一个运算符、另一个算术表达式和一个右括号组成的表达式。为了简化问题,这里定义的是未省略括号的算术表达式,它明确地说明了所有运算符的操作数,形式如下:
(1+((2+3)*(4*5)))
思路:
表达式由括号、运算符和操作数构成,我们根据以下4中情况从左至右逐个将这些实体送入栈处理:
1.将操作数压入操作数栈;
2.将运算符压入运算符栈;
3.忽略左括号;
4.在遇到右括号时,弹出一个运算符,弹出所需数量的操作数,并将运算后的结果压入操作数栈;
在处理完最后一个右括号时,操作数栈上只会剩下一个值,它就是表达式的计算结果。这种方法咋一看难理解,但要证明它能计算得到正确的值很简单:
每当算法遇到一个括号包围,并由一个运算符和两个操作数组成的子式时,他都将运算符和操作数运算结果压入操作数栈。这样的结果就像是在输入中用这个值代替了该子表达式,因此用这个值代替子表达式得到的结果和原表达式相同。我们可以反复应用这个规律并得到一个最终值。
例如:
(1+((2+3)*(4*5)))
(1+(5*(4*5)))
(1+(5*20))
(1+100)
101
代码实现:
这里我采用C#来实现,最终运行效果完全符合预期,证明了此算法的正确性,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
namespace Evaluate
{
class Program
{
static void Main(string[] args)
{
string testExpress = "(1+((2+3)*(4*5)))";
Console.WriteLine(Evaluate(testExpress));
}
//DijkStra
static double Evaluate(string express)
{
var expressChars = express.ToArray();
Stack ops = new Stack();
Stack vals = new Stack();
if (express.Length > 0)
{
foreach (var opt in expressChars)
{
switch (opt)
{
case '+':
case '-':
case '*':
case '/':
ops.Push(opt);
break;
case ')':
var op = ops.Pop();
var v = vals.Pop();
switch (op)
{
case '+':
v += vals.Pop();
break;
case '-':
v = vals.Pop() - v;
break;
case '*':
v *= vals.Pop();
break;
case '/':
v = vals.Pop() / v;
break;
}
vals.Push(v);
break;
case ' ':
case '(':
break;
default:
vals.Push(double.Parse(opt.ToString()));
break;
}
}
return vals.Pop();
}
return double.MaxValue;
}
}
}
总结:
Dijkstra算法充分利用了栈的特性,具备较高的执行效率,经过进一步的扩充修改,就完全可以实现具备科学计算功能的复杂计算类app。如果大家还有更好的,更适用的算法,欢迎在评论中给出地址,谢谢。
转载
❼ 蓝桥杯的比赛项目
1、组别
个人竞赛分为:c/c++本科A组,c/c++本科B组,c/c++高职高专组,java本科A组, java本科B组,java高职高专组,嵌入式设计与开发大学组,嵌入式设计与开发研究生组,单片机设计与开发本科组,单片机设计与开发高职高专组,电子设计与开发本科组,电子设计与开发高职高专组共12个组别。每位选手只能参加其中一个组别的竞赛。
2、时长
软件比赛:4小时,全程封闭。
电子类比赛:5小时,全程封闭。
3、形式
软件类:全程机考。
选手机器通过局域网连接到各个分赛区的竞赛服务器。
选手答题过程中无法访问互联网,也不允许使用本机以外的资源(如USB连接)
以“服务器-浏览器”方式发放试题、回收选手作答。
电子类:动手操作。
4、参赛选手机器环境
X86 兼容机器,内存不小于1G,硬盘不小于60G
Windows NT 内核系统(WindowsXP, Windows2000等)
c/c++ 开发环境:
Dev-cpp 5.4.0 支持ANSI C,ANSIC++,STL
c/c++ API 帮助文档(中文,chm格式)
Java 开发环境:
JDK 1.6
Eclipse Helios for JavaSE
API 帮助文档(中文,chm格式)
5、题目形式
软件类竞赛题目完全为客观题型,选手所提交作答的运行结果为主要评分依据。
(1)填空题
题目为若干具有一定难度梯度、分值不等的结果填空题或代码完善填空题。
结果填空题
题目描述一个具有确定解的问题。要求选手对问题的解填空。
不要求解题过程,不限制解题手段,只要求填写确定的结果。
代码填空题
题目描述一个具有确定解的问题。
题目同时给出该问题的某一解法的代码,但其中有缺失部分。
要求选手读懂代码逻辑,对其中的空缺部分补充代码,使整段代码完整。
只填写空缺部分,不要填写完整句子。
(2)编程题
题目为若干具有一定难度梯度、分值不等的编程题目。这些题目的要求明确、答案客观。
题目一般要用到标准输入和输出。
要求选手通过编程,对给定的标准输入求解,并通过标准输出,按题目要求的格式输出解。题目一般会给出示例数据。
一般题目的难度主要集中于对算法的设计和逻辑的组织上。理论上,选手不可能通过猜测或其它非编程的手段获得问题的解。
选手给出的解法应具有普遍性,不能只适用于题目的示例数据(当然,至少应该适用于题目的示例数据)。
为了测试选手给出解法的性能,评分时用的测试用例可能包含大数据量的压力测试用例,选手选择算法时要充分考虑可行性的问题。
6、涉及知识
Java高职高专组
解题所涉及的知识:基本语法、面向对象、网络编程、接口、集合、IO、多线程、内部类、异常。(数据结构、swing等图形界面不涉及,不涉及html、JSP、Tomcat、开源框架等web开发方面,不涉及JDBC、SQL等数据库编程方面)
解题允许使用的特性:JDK1.5支持的全部特性
Java本科B组
解题所涉及的知识:Java高职高专组全部知识 + 数据结构(高校《数据结构》教材中出现的经典结构,及其通过组合、变形、改良等方法创造出的变种)
解题允许使用的特性:同java高职高专组
Java本科A组
解题所涉及的知识:Java本科B组全部知识 + 设计模式,反射,XML,多核与并发,测试理论,Swing界面。
解题允许使用的特性:同java高职高专组
c/c++高职高专组
解题所涉及的知识:结构、数组、指针、标准输入输出、文件操作、递归
(在代码填空中不会出现c++知识,不会出现ANSI C之外的windows API调用)
解题允许使用的特性:选手可以使用c风格或c++风格或混合风格解答编程大题。
允许使用ANSI C++特性。允许使用STL类库。
(不允许使用MFC类库,ATL类库)
c/c++本科B组
解题所涉及的知识:c/c++高职高专组全部知识 + 数据结构、函数指针、位运算
解题允许使用的特性:同 c/c++高职高专组
c/c++本科A组
解题所涉及的知识:c/c++本科B组全部知识 + 函数模板、复杂宏、汇编知识
解题允许使用的特性:同 c/c++高职高专组
单片机设计与开发(本科组,高职高专组)
模拟、数字电路,传感器及MCS51系列单片机的相关知识,常用仪器使用方面的知识,程序编译调试和下载软件使用方面的知识。
嵌入式设计与开发(大学组)
模拟电路,数字电路,传感及STM32F103 MCU的相关知识,常用仪器使用方面的知识,Keil MDK4.10软件方面的知识。
电子设计与开发(本科组,高职高专组)
模拟电路,数字电路,传感器及电力电子等相关方面的相关知识及应用,电子元器件知识及应用,常用仪器仪表使用方面的知识。
7、评分
软件类
填空题:答案唯一。
程序填空题:按选手填写的代码代入程序中能否得出正确结果为判据。
编程大题:主要以选手所提交的程序的运行结果为依据(大于90%);同时会参考选手程序的编码风格、逻辑性、可读性等方面(小于10%)。
单片机和嵌入式类
硬件设计约占25%,软件编程及调试约占60%,其他约占15%。
电子设计类
硬件设计约占45%,装调约占35%,其他约占20%。
8、注意事项
(1)选手必须符合参赛资格,不得弄虚作假。资格审查中一旦发现问题,则取消其报名资格;竞赛过程中发现问题,则取消竞赛资格;竞赛后发现问题,则取消竞赛成绩,收回获奖证书及奖品等,并在大赛官网上公示。
(2)参赛选手应遵守竞赛规则,遵守赛场纪律,服从大赛组委会的指挥和安排,爱护竞赛赛场地的设备。
❽ JAVA蓝桥杯题库算法训练
不知道你在说什么,你到底要干嘛阿?
❾ 求蓝桥杯习题 算法训练 反置数解法
#include <stdio.h>
#include <math.h>
int getTheNumber(int num)
{
int number=1,i,j=1,flag=0;
if(!num)
return 0;
while(num)
{
i=num%10;
if(i||flag)
{
if(!flag)
{
number=i;
}
else
{
number=number*10+i;
}
flag=1;
}
num/=10;
}
return number;
}
main()
{
int n,m;
scanf("%d%d",&n,&m);
printf("%d\n",getTheNumber(getTheNumber(n)+getTheNumber(m)));
return 0;
}