蓝桥杯java练习题分类汇总
(一)字符串处理类型题目
1.密码破解
据说最早的密码来自于罗马的凯撒大帝。
消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A都分别替换成字母F)。
而你要获得消息原文,也就是要将这个过程反过来。
密码字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z M
原文字母:V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
(注意:只有字母会发生替换,其他非字母的字符不变,并且消息原文的所有字母都是大写的。
)
输入:最多不超过100个数据集组成,每个数据集之间不会有空行,每个数据集由3部分组成:
1.起始行:START
2.密码消息:由1到200个字符组成一行,表示凯撒发出的一条消息.
3.结束行:END
在最后一个数据集之后,是另一行:ENDOFINPUT。
输出:
每个数据集对应一行,是凯撒的原始消息。
⏹Sample Input
START
NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX
END
START
N BTZQI WFYMJW GJ KNWXY NS F QNYYQJ NGJWNFS ANQQFLJ YMFS XJHTSI NS WTRJ
END
START
IFSLJW PSTBX KZQQ BJQQ YMFY HFJXFW NX RTWJ IFSLJWTZX YMFS MJ END
ENDOFINPUT
⏹Sample Output
IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES
I WOULD RATHER BE FIRST IN A LITTLE IBERIAN VILLAGE THAN SECOND IN ROME
DANGER KNOWS FULL WELL THAT CAESAR IS MORE DANGEROUS THAN HE
2. 判断是否为回文串
形如:“abccba”,“abcba”的串称为回文串(指顺读和倒读都一样的词
语),下列代码判断一个串是否为回文串。
请补充空白的部分。
public static boolean is_palindrome(_String str________________)
{
int len=str.length();
for(int i=0;i<_______len_____;i++)
{
if(str.charAt(i)!=str.charAt(______len-i______))return false;
}
___return true__________________;
}
(二)Brute-force类型题目
1.求最大数
问555555的约数中最大的三位数是多少?
2.判断101-200之间有多少个素数,并输出所有素数。
提示:素数又称为质数,判断素数的方法:用该数分别去除2到这个数的平方根之间的所有整数,如果能被整除,则表明非素数,否则为素数。
3.借书方案
小明有五本新书,要借给A,B,C三位小朋友,若每人每次只能借一本,则可以有多少种不同的借法?
4.阶梯长度
有一条长阶梯(不超过200),若每步跨2阶,则最后剩一阶,若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。
只有每次跨7阶,最后才正好一阶不剩。
请问这条阶梯共有多少阶?
5.完数
/*一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如6=1+2+3. 编程找出1000以内的所有完数。
*/
6.比赛安排
两个乒乓球队进行比赛,各出三人。
甲队为a,b,c三人,乙队为x,y,z三人。
已抽签决定比赛名单。
有人向队员打听比赛的名单。
a说他不和x比,c 说他不和x,z比,请编程序找出三队赛手的名单。
7.求数字
数学中有一些很有趣的数字,比如:一个数的的平方的尾数等于这个数,例如:5x5=25,5是25的尾数、25x25=625,25是625的尾数。
求50000以内具有这一特性的数字。
8.抽奖
某企业为了促销,搞抽奖宣传活动,奖品为新款手机一部,抽奖规则如下:
(1)有n个盒子摆成一圈,盒子按顺时针方向依次编号为0,1,2,……,
n-1。
手机随机放在其中一个盒子中。
(n为自然数)
(2)从0号盒子开始摸奖,顺时针方向计数,每遇到第m个盒子就摸奖一次。
(m为自然数,m<n)
(3)直到重新摸到0号盒子为止。
例如n=5,m=3,那么摸奖经过的盒子编号依次为0,3,1,4,2,0。
请编写一个完整的程序,随机输入n,m(m<n),程序分析手机有没有不被抽中的机会?如果有,概率是多少?(概率=不被抽中的可能数/n)
(三)递归算法
1.排列数的推算
计算3个A,2个B可以组成多少种排列的问题(如:AAABB,AABBA)是《组合数学》的研究领域。
但有些情况下,也可以利用计算机计算速度快的特点通过巧妙的推理来解决问题。
下列的程序计算了m个A,n个B可以组合成多少个不同排列的问题。
请完善它。
int f(int m,int n)
{
if(m==0||n==0)return1;
return_______________________;
}
2.年龄推算
第1个人10,第2个比第1个人大2岁,依次递推,请用递归方式计算出第8个人多大?
3.猴子吃桃问题:
猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
(提示:定义一个恰当的递归函数,边界条件为第9天的桃子数)。
4.Hanoi塔问题
设有S、A、G共三根塔座,在塔座S上堆叠n个金盘,每个盘大小不同,只允许小盘在大盘之上,最底层的盘最大,如下图所示。
现在要求将S上的盘全部移到G,每次只能移动一个盘,圆盘可以插在S、A、G任一个塔座上,任意时刻大盘不能放在小盘之上。
试用递归算法输出移动金盘的步骤。
例如:当n=3时,输出的移动步骤如下:
move 1 from S to G
move 2 from S to A
move 1 from G to A
move 3 from S to G
move 1 from A to S
move 2 from A to G
move 1 from S to G
(四)找规律类型题目
1.方阵填数(可用递归)
2.有一分数序列:2/1, 3/2, 5/3, 8/5, 13/8, 21/13,求出这一数列的
前20项之和。
(五)排序算法
有一个长度为8的一维数组,存放的是8个整数{25, 85, 78, 90,88,75,70,65},要求编写程序对该数组进行从大到小进行排序,并将排序前,排序后的数组分别输出来。
(六)随机算法
文本文件(names.txt)中存储了30个学号及人名,分3次从中抽出3个名字并输出,要求每个人的抽中概率相同,不能有1个人抽中2次或者3次。
names.txt文件内容如下:
11124021807,陈小坤
11124021808,黄灵峰
11124021802,梁爱玲
11124021803,马维婵
11124021810,杨梅
11124021813,刘淑瑶
11124021820,张明
11124021817,王凯祥
11124021815,邓行奇
11124021821,李永林
11124021822,黄琴丹
11124021818,曾雅琴
11124021819,陈媛洁
11124021816,刘娜丝
11124021824,周吉韶
11124021823,朱燕姣
11124021825,苏海燕
11124021827,王菲
11124021828,洪海洋
11124021826,徐敬
11124021924,林佳云
11124021916,黄龙金
11124021909,蓝暖
11124021917,杨林剑
11124021921,何梁荣
11124021903,樊伟彩
11124021915,盘桂淑
11124021911,廖丽梅
11124021922,李永慧
11124021912,李路。