(一)字符串处理类型题目
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=5,m=3,那么摸奖经过的盒子编号依次为0,3,1,4,2,0。 请编写一个完整的程序,随机输入n,m(m 1.排列数的推算 计算3个A,2个B可以组成多少种排列的问题(如:AAABB, AABBA)是《组合数学》的研究领域。但有些情况下,也可以利用计算机计算速度快的特点通过巧妙的推理来解决问题。下列的程序计算了m个A,n个B可以组合成多少个不同排列的问题。请完善它。 int f(int m, int n) { if(m==0 || n==0) return 1; 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,李路