- 博客(11)
- 收藏
- 关注
原创 求n的阶乘
利用递归的方法求n的阶乘 代码如下: import java.util.Scanner; public class _04_求阶乘 { public static void main(String[] args){ Scanner sc=new Scanner(System.in); while(true){ System.out.print("请输入一个数"); int num=sc.nextInt(); System.out.println(num+"的阶乘是:"
2020-08-08 13:00:09
377
原创 表白心形
描述: 一个适合表白的程序 代码如下: public class Aixin { public static void main(String[] args){ for(float y=(float) 2.5;y>-2.5;y -=0.1){ for(float x=(float)-2.5;x<2.5;x+=0.05){ float a = x*x+y*y-1; if((a*a*a-x*x*y*y*y)<=0.0){ System.out.print(
2020-08-07 22:31:35
248
原创 出现k次与出现1次
问题描述: 数组中只有一个数出现了1次,其他的数都出现了k次,请输出只出现1次的数。 解题思路: 数组A中,除了某一个数字x之外,其他数字都出现了三次,而x出现了一次。请给出最快的方法找到x。应该如何思考呢? 如果是两个相同的就可以利用两个相同的数异或结果为0来计算的,但这个题目中其他数字是出现了3次,因此肯定不可以再使用异或了。 我们换一个角度来看,如果数组中没有x,那么数组中所有的数字都出现了3次,在二进制上,每位上1的个数肯定也能被3整除。如{1, 5, 1, 5, 1, 5}从二进制上看有: 1:0
2020-08-07 17:00:23
485
原创 0~1间浮点实数的二进制表示
问题描述: (1)给定一个介于0 和1之间的实数(如:0.625),类型为double,打印它的二进制表示(0.101,因为小数后的二进制分别表示为0.5,0.25,0.125……)。 (2)如果该数字无法精确的用32位以内的二进制表示,则打印“ERROR”。 解题分析: 小数转二进制乘以2,判断整数位是0还是1,再去整数位,减后的差再乘以2。 代码如下: import java.util.Scanner; public class _求0和1之间浮点实数的二进制表示 { public static vo
2020-07-11 19:16:24
783
原创 整数的奇偶位交换
问题描述: 将一个整数的二进制表示时的奇位与偶位上的数进行交换。 解题思路: 先输入的将整数转换成二进制表示,在将这个二进制数与0101 0101 0101 0101 进行与运算,这样是为了保留偶位上的数值。 然后再将二进制数与1010 1010 1010 1010进行与运算,这样是为了保留保留奇位上的数值。 代码如下: import java.util.Scanner; public class _整数的奇偶为交换 { public static void main(String[] args){
2020-07-10 22:41:31
308
原创 求一个数二进制中的1的个数
问题描述: 写一个函数能够实现云输入一个整数,输出该数的二进制表示中1的个数。 解题分析: 方法一: 可以先把n与1做按位与运算,判断最低为是不是1。把1向左移动1位变成2,在与n那位与运算,这样就可以判断n的次低位是不是1,循环往复知道到n最高位判断完,1变成0,同时最为循环停止的条件。 代码如下: import java.util.Scanner; public class _求二进制中1的个数 { public static void main(String[] args){ Scanner s
2020-07-10 21:08:04
226
原创 找出唯一成对的数
问题描述: 1-1000这个1000个数放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次。每个数组元素只能访问一次,设计一个算法,将它找出来。 解题过程: 方法一:不用辅助存储空间 我们知道一个两个数相同的数异或为0,既然已经知道数组中存放的数中有一个数重复,则可以自己创建一个1~1000的数组,然后再与给出的随机数组异或直接得出那个重复的数 代码如下: import java.util.Random; public class _找唯一成对的数_1 { public static
2020-07-09 00:10:48
352
原创 黄金连分数的计算
问题描述: 黄金数= 这个连分数计算的“层数”越多,它的值越接近黄金分割数,利用这一特性,求出黄金分割数的足够精确值,要求四舍五入到小数后100位。 解题思路: 1、化为求斐波那契相邻两项的比值,到多少项?越多就越精确,n/(n+1)项,n再往上增加,这个比值的小数点后101位是稳定的,也就是不变的。 2、double无法表示100位小数,BigInteger和BigDecimal可以表示100位小数。 代码如下: 1、试一试利用double方法求 方法一: public class _黄金连分数 { p
2020-07-08 00:09:08
3091
原创 枚举算法
问题描述: 假设a b c d e代表1~9不同的5个数字(注意是各不相同的数字,且不含0),能满足形:abcde = cbdce这样的算式一共有多少种呢? 代码如下:
2020-07-06 07:05:08
490
原创 计算未来离现在最近的是星期天的年份
问题描述: 1999年12月31日是星期五,请问:未来哪个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天?请回答年份(只写这4位整数,不要写12月31日等多余的信息) 代码如下:
2020-07-04 18:09:52
208
原创 走格子的路径有多少条(java)
问题描述: 在一个5x4的格子中,先从左上角的第一个格子开始跳跃,每一次只能跳到相邻的右边的或下边的格子中,直到跳到右下角最后一个格子结束,算一算共有多少种可能的跳跃路线。 思路分析: (1)递归法 由于只能往右或往下跳跃,就可以先各自算出往右和往下跳跃的时的路线数,然后再相加得到总的路线数。 (2)直接计数法 每完成一次完整的跳跃数量就加1,知道没有路线为止。 代码如下: 运行结果如下: ...
2020-07-02 00:15:59
1232
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅