算法
算法
-小龙人
以梦为马,不负韶华
展开
-
约瑟夫环
介绍:约瑟夫环:有n个人围成一圈,开始报数1,2…m。报道第i个数然后枪毙,问最后剩下的k个人的位置在哪?package method2;/** * 约瑟夫环:有n个人围成一圈,开始报数1,2...m。报道第i个数然后枪毙,问最后剩下的k个人的位置在哪? * 假设n=50,m=3,i=3,k=1 * @author wql * */public class JosephRing {原创 2017-07-30 22:22:46 · 1888 阅读 · 0 评论 -
算法的时间复杂度和空间复杂度详解
算法的时间复杂度和空间复杂度详解转载 2019-05-04 17:15:05 · 5122 阅读 · 1 评论 -
猴子吃桃算法
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一 个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一 个。到第 10 天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 程序分析:采取逆向思维的方法,从后往前推断。下面用了for循环和递归两种方法来实现package com.math.forth;/*** * 猴子吃桃问题:猴原创 2017-10-24 12:40:01 · 1903 阅读 · 0 评论 -
分数序列规律求和
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前 20 项之和。 程序分析:找到分子与分母的变化规律; 在面试中手写代码很多人会大意不处理数据类型,这里的数据类型为doublepackage com.math.forth;/*** * 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和。 程序分析:请抓住原创 2017-10-24 21:33:55 · 3193 阅读 · 0 评论 -
等腰三角形的打印
打印出一个等腰三角形。 思路很容易:双重for循环处理。 难点在于如何控制等腰,让图形像个金字塔,可以想象一个矩形挖成等腰三角形package com.math.forth;/*** * 打印出一个等腰三角形。 思路很容易:双重for循环处理。 * 难点在于如何控制等腰,让图形像个金字塔 * * @author wql * */public class Math12 {原创 2017-10-24 22:14:07 · 2032 阅读 · 0 评论 -
数字阶层和...递归算法
题目:求1+2!+3!+…+20!和 分析:分析:双重for循环很简单。 重点分析下递归方法:当我们去求20!时可以理解为20*19!,在理解为20*19*18!….最后变为20*19*18*…*1!;1的阶乘和为1。从这里可以看出递归的现象,定义递归开始和终止条件即完成了package com.math.forth;/*** * 求1+2!+3!+...+20!和 * 分析:双重for原创 2017-10-25 12:36:46 · 2249 阅读 · 0 评论 -
回文数判断
题目:输入五位数的的正整数,判断其是不是回文数。12321既是回文数个位数字等于十万位数字并且百位数字等于万位数字。 分析:将五位数转换为String类型,然后转为char类型数组,取出每个数字package com.math.forth;import java.util.Scanner;/*** * 输入五位数的的正整数,判断其是不是回文数。12321既是回文数个位数字等于十万位数字并且百位数原创 2017-10-25 21:10:54 · 2153 阅读 · 0 评论 -
求素数
题目求100以内的素数。 分析:素数定义是只能被1和其本身整除,素数大于1。假设一个数为n,那么在整数2到n-1中所有数字都不能被n整除,n则为素数package com.math.forth;/*** * 求100以内的素数。 * 分析:素数定义是只能被1和其本身整除,素数大于1。假设一个数为n,那么在整数2到n-1中所有数字都不能被n整除,n则为素数 * @author wql *原创 2017-10-25 21:22:44 · 1310 阅读 · 0 评论 -
有 n个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子, 问最后留下的是原来第几号的那位
题目:有 n个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子, 问最后留下的是原来第几号的那位。 分析: 1.圈子人有序号,并且可以循环报数,用数组来存放。 2.圈子人的状态有两种情况,用1和0表示 3.循环报数遇到3就退出,那么最后只会剩下一个人—>这个便是循环条件 4.设置一个计数器,每次有原创 2017-10-26 23:09:16 · 3004 阅读 · 0 评论 -
杨辉三角
题目:打印杨辉三角 分析: 1.每一行数字的个数等于行数(行数<=列数) 2.每行数字开头和结尾数字为1 3.行与列之间的关系,每个数等于它上行同位置的数和前一个数之和方法原创 2017-10-31 21:11:02 · 2044 阅读 · 0 评论 -
完数
题目:一个数如果恰好等于它的因子之和,这个数就称为 “完数 “。例如 6=1+2+3.编程 找 出 1000 以内的所有完数。 分析:嵌套for循环找出数字的每个因素,然后累加判断package com.math.forth;/** * 题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如 6=1+2+3.编程 找 出 1000 以内的所有完数。 * * @author w原创 2017-10-23 22:43:07 · 1535 阅读 · 0 评论 -
数字个数依次叠加 s=a+aa+aaa+aaaa+aa...a
题 目 : 求 s=a+aa+aaa+aaaa+aa…a 的 值 , 其 中 a 是 一 个 数 字 。 例 如2+22+222+2222+22222(此时共有 5 个数相加),几个数相加有键盘控制 分析:重点求出每一个数值,利用循环package com.math.forth;import java.util.Scanner;/*** * 题 目 : 求 s=a+aa+aaa+aaaa+aa原创 2017-10-22 21:42:49 · 2649 阅读 · 0 评论 -
有1,2,3,4四个数字,能组成多少个互不相同且无重复数字的三位数 都是多少
有1,2,3,4四个数字,能组成多少个互不相同且无重复数字的三位数 都是多少/** * 有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数 都是多少 * * @author wql * */public class Num5 { public static void main(String[] args) { // TODO Auto-gene原创 2017-09-09 13:45:33 · 5998 阅读 · 0 评论 -
兔子问题,斐波纳契数列
题目:古典问题(斐波纳契数列):有一对兔子,从出生后3个月起每个月都生一对兔子,小兔子长到第三个月又会生一对兔子,假如兔子都不死,问每个月兔子总数? 分析规律:1 1 2 3 5 8 13 21… 从第二个月以后每个月兔子总数是前两个月兔子总数之和1.递归算法:效率灰常低package com.math.forth;/*** * 古典问题(斐波纳契数列):有一对兔子,从出生后原创 2017-10-17 22:43:32 · 1447 阅读 · 0 评论 -
求出100~200之间的素数
求出100~200之间的素数的个数,并求出所有的素数。 分析:素数定义是只能被1和该数本身整除package com.math.forth;/** * 求出100~200之间的素数的个数,并求出所有的素数。 * 分析:素数定义是只能被1和该数本身整除 * * @author wql * */public class Math02 { public static voi原创 2017-10-18 23:12:31 · 1661 阅读 · 0 评论 -
水仙花数
打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方; 分析:利用循环找出三位数中的所有水仙花数,利用数字算法将三位数拆除百位十位个位 Eg:一个三位数为x,则百位数字为x/100;十位数字为x/10%10;个位数字为x%10package com.math.forth;/** *原创 2017-10-19 12:24:54 · 1572 阅读 · 0 评论 -
用 1,2,2,3,4,5 六个数字,打印出所有不同的排列,要求:"4"不能在第三位,"3"与"5"不能相连
题目如下:用 1、2、2、3、4、5 这六个数字,用 java 写一个 main 函数,打印出所有不同的排列,如: 512234、412345等,要求:”4”不能在第位,”3”与”5”不能相连。 分析: 1.不考虑条件,一共会产生多少个数字 2.去筛选数字,满足要求的留下来 3.将数字int类型转为String类型,利用String的方法来筛选,具体看APIpackage com.math.原创 2017-10-27 18:57:33 · 3871 阅读 · 0 评论 -
正质因数分解
题目:将一个正质因数分解。例如:90=2*3*3*5. * 程序分析:对n进行质因数分解,应先找到一个最小的质数k,然后按下述步骤: 1.如果这个质数恰等于n,则说明分解质因数已经结束,打印出即可 2.如果n<>k,但n能被k整除,则打印出k的值,并利用n除以k的商,作为新的正整数,重复执行第一步 3.如果n不能被k整除,则用k+1作为k的值,重复执行第一步按照上面程序分析思想实现p原创 2017-10-20 21:10:31 · 2144 阅读 · 0 评论 -
两个数最大公约数和最小公倍数
输出两个正整数m和n,求出这两个数最大公约数和最小公倍数 分析:两个必然会有一大一小,比较出来,用for循环来处理小的那个数,找出最大公约数,进而求出最小公倍数package com.math.forth;import java.util.Scanner;/** * 输出两个正整数m和n,求出这两个数最大公约数和最小公倍数 * * @author wql * */public cla原创 2017-10-21 17:11:18 · 2091 阅读 · 0 评论 -
字符串中数字,字母,空格等的数量统计
题目:输入一行字符,分别统计出其中英文字母,空格,数字和其他字符个数. 分析:将字符串转为char数组,然遍历出每一个字符,进行判断统计.下面有两个方法实现,方法二采用正则表达式判断字符类型package com.math.forth;/*** * 输入一行字符,分别统计出其中英文字母,空格,数字和其他字符个数 * 分析:将字符串转为char数组,然遍历出每一个字符,进行判断统计 */i原创 2017-10-22 14:02:12 · 2562 阅读 · 2 评论 -
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少/** * 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少 * * @author wql * */public class Num7 { public static void main(String[] args) { // TO原创 2017-09-09 13:40:40 · 2006 阅读 · 0 评论