算法基础题
文章平均质量分 57
森林里的流浪诗人
这个作者很懒,什么都没留下…
展开
-
一个整数,它加上100后是一个完全平方数,加上168又是一个完全平方数,请问该数是多少
解题思路:整数,太大的会溢出,可以截止到10万。开平方以后取模1得到的数字是0,表示可以被开平方,是素数代码:public class Main11 { public static void main(String[] args) { // TODO Auto-generated method stub for(int i=1;i<100000;i++){ ...原创 2018-03-05 22:34:03 · 1788 阅读 · 0 评论 -
一个偶数总能表示为两个素数之和
解题思路:用一个函数判断是否是素数,确定两个数相加之后等于输入的那个数,再分别判断两个数是不是素数,如果都是素数,则可以输出代码:public class Main7 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = n...原创 2018-03-10 20:42:41 · 2407 阅读 · 0 评论 -
求0—7所能组成的奇数个数
解题思路:最高位不能为0,从第二位开始,可以取0到7的所有数字,然后感觉就会有无限个,所以,我加了一个条件,就是每个数字只能出现一次,这样这个数字最多就是八位代码:public class Main6 { public static void main(String[] args) { // TODO Auto-generated method stub int ...原创 2018-03-10 15:48:46 · 2302 阅读 · 0 评论 -
809*??=800*??+9*??, 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果
解题思路:用一层循环在10到99之间查找,里面加上判定条件,最终找到唯一一个符合条件的数字代码:public class Main5 { public static void main(String[] args) { // TODO Auto-generated method stub for(int i=10;i<100;i++){ ...原创 2018-03-10 15:32:46 · 2254 阅读 · 0 评论 -
海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。 第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了
解题思路:可以从第五个人开始,从后往前推。最后一个猴子分成五份还多一个,所以最后至少有6个桃子。写一个函数判断那个数字是否可以被分五次代码:public class Main3 { public static void main(String[] args) { int number = 6; while(true) { if(isT...原创 2018-03-10 15:06:01 · 7122 阅读 · 0 评论 -
字符串排序
解题思路:对于String数组,Arrays里带了sort方法,排序完,再输出代码:public class Main2 { public static void main(String[] args) { // TODO Auto-generated method stub String [] strs=new String[]{"dcner","cdweij"...原创 2018-03-10 10:34:19 · 188 阅读 · 0 评论 -
编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针
解题思路:用两个函数,分别表示奇数和偶数的和,需要注意的是for循环里,i需要定义成double类型的,否则默认转换成int之后,最后的结果为0代码:public class Main1 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner inp...原创 2018-03-10 10:28:19 · 4024 阅读 · 0 评论 -
写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度
解题思路:字符串自带的求长度的函数length()代码:public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); String s = i...原创 2018-03-10 10:11:21 · 3517 阅读 · 0 评论 -
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
解题思路:用一个布尔类型的数组表示,true表示所有人都在里面,然后用双层循环嵌套,外层循环控制只剩下一个人,内层循环用于删除等于3的人。下面的代码有问题,目前我还没有想到解决办法,希望大神可以指点一下代码:public class Main10 { public static void main(String[] args) { // TODO Auto-generated ...原创 2018-03-10 10:06:30 · 2432 阅读 · 0 评论 -
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
解题思路:用两个数组,将第一个数组的值按照要求赋给第二个数组代码:public class Main8 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); int n ...原创 2018-03-09 22:22:03 · 1698 阅读 · 0 评论 -
输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
解题思路:找到最大和最小的数的下标,然后进行交换即可代码:public class Main7 { public static void main(String[] args) { // TODO Auto-generated method stub int [] a = new int[10]; Scanner input = new Scanne...原创 2018-03-09 21:56:59 · 1891 阅读 · 0 评论 -
读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*
解题思路:Random函数里可以随机产生50以内的整型数据,之后输出代码:public class Main8 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); Ra...原创 2018-03-10 20:51:20 · 8614 阅读 · 0 评论 -
某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用 和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
解题思路:写一个转换的函数,用a b c d依次代替每一位的值,求得值之后再进行加5除以10的转换,最后再计算这个数本身的时候再把 ad bc 位置互换代码:public class Main9 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner...原创 2018-03-10 21:08:16 · 10405 阅读 · 0 评论 -
计算字符串中子串出现的次数
解题思路:可以使用正则表达式代码:public class Main10 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); String s = input.next...原创 2018-03-10 21:21:51 · 644 阅读 · 0 评论 -
企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,
解题思路:题目比较长,可以先将数据抽取出来,用if语句进行分别做条件判断代码:public class Main10 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); ...原创 2018-03-05 22:11:34 · 13064 阅读 · 0 评论 -
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
解题思路:四个数字可能会出现在三个位数里面的任意一个位置,所以需要使用三层循环,每层循环四个数字轮流,就找到了所有三位数,然后判断百位,十位,个位是否相同,如果不相同,表示没有重复,可以输出代码:public class Main9 { public static void main(String[] args) { // TODO Auto-generated method ...原创 2018-03-05 21:32:15 · 600 阅读 · 0 评论 -
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
解题思路:除了第一次下落,高度都减半,走过的路程包括了下降和上升,要乘以2代码:public class Main8 { public static void main(String[] args) { // TODO Auto-generated method stub drop(); } public static void drop(){ ...原创 2018-03-05 20:38:18 · 2421 阅读 · 0 评论 -
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3。编程找出1000以内的所有完数。
解题思路:用i表示一个数字,找到所有质因数,然后相加,如果相加的结果等于i,就输出这个数字代码:public class Main7 { public static void main(String[] args) { // TODO Auto-generated method stub part(); } public static void part...原创 2018-03-05 20:08:59 · 3133 阅读 · 0 评论 -
求s = a + aa + aaa + aaaa + aa...a的值,其中a是一个数字。例如2 + 22 + 222 + 2222 + 22222(此时共有5个数相加),几个数相加有键盘控制。
解题思路:通过观察数字可以知道,a的个数多少个,就加多少个a(个位数),加(a-1)个a*10,所以我们可以通过一个循环得到每个位数相加的结果,再加入总和代码:public class Main6 { public static void main(String[] args) { // TODO Auto-generated method stub Scanne...原创 2018-03-05 19:47:46 · 3099 阅读 · 0 评论 -
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
解题思路:(1)一行字符先转换成单个字符的数组,用toCharArray方法;(2)对每个字符依次使用equals方法,可以用于比较比较,如果找到了相应的记录加一。错了,字符串才能使用equals方法,应该是==‘ ’代码:public class Main5 { public static void main(String[] args) { // TODO Auto-gen...原创 2018-03-05 19:20:10 · 1416 阅读 · 0 评论 -
【最大公约数、最小公倍数】输入两个数字,分别求最大公约数和最小公倍数
解题思路:最大公约数可以使用辗转相除法,https://baike.baidu.com/item/%E8%BE%97%E8%BD%AC%E7%9B%B8%E9%99%A4%E6%B3%95/4625352?fr=aladdin.。最小公倍数:等于两数相乘除以最大公约数代码:public class Main4 { public static void main(String[原创 2018-03-04 21:46:59 · 581 阅读 · 0 评论 -
【条件运算符】利用条件运算符的嵌套来完成此题:学习成绩=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示
解题思路:条件运算符,a?b:c,如果为真,执行b,如果为假,执行c代码:public class Main2 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); do...原创 2018-03-04 20:43:29 · 693 阅读 · 0 评论 -
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
解题思路:(1)从最小的质数开始找起,假设是i,如果i=n表示n的质数是它本身,结束程序;(2)如果n不能被i整除,说明i不是n的因素,所以再去判断i+1是否是i的因数;(3)如果找到了一个质因数,开始找下一个之前,需要用n除以这个质因数,可以避免一直找同一个数字代码:public class Main1 { public static void main(String[] args) { ...原创 2018-03-04 20:10:02 · 1091 阅读 · 0 评论 -
有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩, 况原有的数据和计算出的平均分数存放在磁盘文件"stud"中。
解题思路:用一个二维数组存储,之后再写入磁盘中代码:import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.util.Scanner;public class Main11 { public static void main(String[] args) { ...原创 2018-03-10 21:28:35 · 7032 阅读 · 0 评论 -
输入3个数a,b,c,按大小顺序输出
解题思路:用一个临时变量,通过交换确保a<b<c代码:public class Main6 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); int a ...原创 2018-03-09 21:31:17 · 2690 阅读 · 0 评论 -
打印出杨辉三角形
解题思路:用一个二维数组,分别控制行和列代码:public class Main5 { public static void main(String[] args) { // TODO Auto-generated method stub print(); } public static void print(){ int[][] a=n...原创 2018-03-09 21:24:33 · 415 阅读 · 0 评论 -
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和
解题思路:通过观察,可以发现,前一项的分子和分母之和等于后一项的分子,前一项的分子等于后一项的分母。代码:public class Main7 { public static void main(String[] args) { // TODO Auto-generated method stub sumi(); } public static voi...原创 2018-03-07 19:07:00 · 4562 阅读 · 0 评论 -
题目:打印出如下图案(菱形) * *** ****** ******** ****** *** *
解题思路:可以把图形分成两个部分来看待,第一部分是前面四行,第二部分是后面三行。前面四行,空格的个数依次减少,*以行数两倍的速度增加,同时打印完一行*之后,输出换行第二部分,就是把第一部分的倒着用一下代码:public class Main6 { public static void main(String[] args) { // TODO Auto-generated me...原创 2018-03-07 11:04:01 · 19815 阅读 · 0 评论 -
两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
解题思路:设置三个变量,表示甲队队员,另外三个值表示乙队队员,分别进行赋值,总共有,3*3*3种结果。再去掉不要一起比赛的,同时确保双方队员三个人都上场,一对一,搞定。代码:package c;public class Main5 { public static void main(String[] args) { // TODO Auto-generated method s...原创 2018-03-06 22:51:03 · 1008 阅读 · 0 评论 -
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个
解题思路:可以从后往前加,第一次是1,第二次是4.....,结果是第一次的乘以2加2代码:public class Main4 { public static void main(String[] args) { // TODO Auto-generated method stub int sum=1; for(int i=2;i<=10;i+...原创 2018-03-06 20:46:49 · 502 阅读 · 0 评论 -
输出9*9口诀
解题思路:用两个循环,依次表示第一个和第二个数字,最后输出结果。如果都到9,会有很多重复的,九九乘法表是对称的,可以控制第二个数字的大小代码:public class Main2 { public static void main(String[] args) { // TODO Auto-generated method stub caculate(); ...原创 2018-03-06 20:19:53 · 367 阅读 · 0 评论 -
输入三个整数x,y,z,请把这三个数由小到大输出
解题思路:设计实现x<y<z,按照顺序输出代码:public class Main1 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); int x=inp...原创 2018-03-06 20:04:28 · 2148 阅读 · 0 评论 -
输入某年某月某日,判断这一天是这一年的第几天?
解题思路:因为平年和闰年的2月时间不一样,所以要先判断是平年还是闰年。接着根据switch语句,把所输入的月份分开算,前面的月份所经历的时间,加上本月的第一几天日期。因为从2月后开始,每个月的计算都要判断一下平年还是闰年,所以把这个写成了一个函数。这样写代码还是有点儿多,也可以一开始就判断是平年还是闰年,然后分别计算代码:public class Main { public static v...原创 2018-03-06 19:45:15 · 582 阅读 · 0 评论 -
【斐波那契数列】兔子繁殖问题
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第3个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?算法分析:假设给兔子的对数编号第一个月:1 , sum=1;第二个月:1 ,sum=1;第三个月:1生2,sum=2;第四个月:1生3,2,sum=3;第五个月:1生4,2生5,3,sum=5第原创 2017-12-06 21:34:42 · 2278 阅读 · 1 评论 -
【水仙花数问题】水仙花数是指一个三位数,其各位数字立方和等于该数本身
分析:一个布尔类型的函数isNarcissus(int i)用于判断传入的参数是否是水仙花数,其中包含了求一个数的百位,十位,个位,最难理解的求十位,一个三位数取模100后得到一个两位数,比如256%100=56,此时再将这个两位数除以10得到商,余数被自动省略,即56/10=5,两次之后得到256的十位是5代码如下:public class Main { public st原创 2017-12-11 21:31:36 · 9825 阅读 · 0 评论 -
求1+2!+3!+...+20!的和
解题思路:总共两个部分组成,一部分是阶乘,一部分是相加。分别用两个函数表示代码:public class Main8 { public static void main(String[] args) { // TODO Auto-generated method stub sumi(); } //求阶乘 public static int fact...原创 2018-03-07 19:34:32 · 957 阅读 · 0 评论 -
利用递归方法求5!
解题思路:我理解的递归是要从后往前调用数据本身,还要避免陷入死循环,然后因为每次返回都要包含n-1,所以n要从2开始,如果n等于1,就直接输出结果代码:public class Main9 { public static void main(String[] args) { // TODO Auto-generated method stub System.out...原创 2018-03-07 19:57:59 · 4304 阅读 · 0 评论 -
有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个
解题思路:要知道第五个人多大,可以从第一个人开始推,每次加2也可以使用递归的方法,依次往前推代码:public class Main10 { public static void main(String[] args) { // TODO Auto-generated method stub age(); } public static void a...原创 2018-03-07 20:10:25 · 2291 阅读 · 0 评论 -
【ccf】字符串匹配
问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。输入格式 输入的第一行包含一个字符串S,由大小写英文字母组成。 第二行包含一个数字,表示大小写敏感的选项,当数字为0时表示大小写不敏感,当数字为1时表示大小写敏感。 第...原创 2018-03-09 20:56:21 · 356 阅读 · 0 评论 -
取一个整数a从右端开始的4~7位
解题思路:将长整型转换成字符串代码:public class Main3 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); Long l =input.nextLon...原创 2018-03-08 22:29:39 · 1678 阅读 · 0 评论